初学LINQ语句
//有兩個數組,客戶和地址,他們之間通過公司名關聯:var customers = new[] { new {CustomerID=1,FirstName="Kim",LastName="Abercrombie",CompanyName="Alpine Sky House"},new {CustomerID=2,FirstName="Jeff",LastName="Hay",CompanyName="Coho Winery"},new {CustomerID=3,FirstName="Charlie",LastName="Herb",CompanyName="Alpine Sky House"},new {CustomerID=4,FirstName="Chris",LastName="Preston",CompanyName="Trey Reseach"},new {CustomerID=5,FirstName="Dave",LastName="Barnett",CompanyName="Wingtip Toys"},new {CustomerID=6,FirstName="Ann",LastName="Beebe",CompanyName="Coho Winery"},new {CustomerID=7,FirstName="John",LastName="Kane",CompanyName="Wingtip Toys"},new {CustomerID=8,FirstName="David",LastName="Simpson",CompanyName="Trey Reseach"},new {CustomerID=9,FirstName="Greg",LastName="Abercrombie",CompanyName="Wingtip Toys"},new {CustomerID=10,FirstName="Tim",LastName="Abercrombie",CompanyName="Wide World Importers"}};var addresses = new[] { new {CompanyName="Alpine Sky House",City="Berne",Country="Switzerland"},new {CompanyName="Coho Winery",City="San Francisco",Country="United States"},new {CompanyName="Trey Reseach",City="New York",Country="United States"},new {CompanyName="Wingtip Toys",City="London",Country="United Kingdom"},new {CompanyName="Wide World Importers",City="Tetbury",Country="United Kingdom"}};//------------------篩選出customers數組中客戶名(從枚舉集合投射指定字段)----------------------//1.使用Select方法,用Lambda表達式標識要投射的字段(IEnumerable類可換var)IEnumerable<string> customerFirstNames = customers.Select(cust=>cust.FirstName);//2.使用from和select查詢操作符var customerFirstNames = from custs in customers select custs.FirstName;//-----------------篩選出地址數組中國家是美國的公司名稱(篩選來自可枚舉集合的行)----------------------//1.使用Where方法,用Lambda表達式指定行的匹配條件var usCompanies=addresses.Where(addr=>String.Equals(addr.Country,"United States")).Select(usComp=>usComp.CompanyName);//2.使用where操作符var usCompanies=from addr in addresses where String.Equals(addr.Country,"United States") select addr.CompamyName;//----------------篩選出地址數組中公司名稱并降序排序(按特定順序枚舉數據)--------------------------//1.使用OrderBy方法,用Lambda表達式標識用于對行進行排序的字段var companyNames=addresses.OrderBy(addr=>addr.CompanyName).Select(comp=>comp.CompanyName);//2.使用orderby查詢操作符var companyNames=from addr in addresses orderby addr,CompanyName select addr.CompanyName; //--------------用國家對地址數組進行分組篩選(根據字段的值對數據進行分組)----------------------------//1.使用GroupBy方法,用Lambda表達式標識用于對行進行分組的字段var companiesGroupedByCountry=addresses.GroupBy(addrs=>Country);//2.使用group by查詢操作符var companiesGroupedByCountry=from addr in addresses group addr by addr.Country; //--------------------關聯兩個數組查詢(聯接兩個不同集合中的數據)-------------------------------//1.使用Join方法指定連接的集合、聯接條件和結果字段var citiesAndCustomers=Customers.Select(c=>new{c.FirstName,c.LastName,c.CompanyName}).Join(addresses,custs=>custs.CompanyName,addrs=>addrs.CompanyName,(custs,addrs)=>new{custs.FirstName,custs.LastName,addrs.Country});//2.使用Join查詢操作符var citiesAndCustomers=from a in addresses join c in customers on a.CompanyName equals c.CompanyName select new{c.FirstName,c.LastName,a.Country};
轉載于:https://www.cnblogs.com/wangqilong/p/9417496.html
總結
- 上一篇: 把你留下来是什么歌啊?
- 下一篇: [原创]SparkR针对mysql的数据