一、查询语句
var queryResults = from n in all
where n.?
orderby ? <descending>, +++
select n;
// (from c in customers select c.Region).Distinct();
二、方法
var queryResults = all.OrderBy(n => ? ).ThenBy(n => ?).+++
.Where(n=> n.?)
.Distinct(); //唯一
三、分组
var queryResults = from c in customers group c by c.Region into cg select new { TotalSales = cg.Sum(c => c.Sales), Region = cg.Key } //key表示创建分组使用的条件 ; var orderedResults = from cg in queryResults orderby cg.TotalSales descending select cg ;
四、Take 和 Skip
qureryResults.Take(n) :结果中前n个;
queryResults.Skip(n) :跳过前n个。
五、First 和 FirstOrDefault
返回结果集中第一个匹配给定条件的元素。
var queryResults = from c in customers select new { c.City, c.Country, c.Region } ; Console.WriteLine("A customer in Africa"); Console.WriteLine(queryResults.First(c => c.Region == "Africa")); Console.WriteLine("A customer in Antartica"); Console.WriteLine(queryResults.FirstOrDefault(c => c.Region == "Antartica"));
六、集运算符
var customerIDs = from c in customers select c.ID ; var orderIDs = from o in orders select o.ID ; var customersWithOrders = customerIDs.Intersect(orderIDs); Console.WriteLine("Customers with Orders:"); foreach (var item in customersWithOrders) { Console.Write("{0} ", item); } Console.WriteLine(); Console.WriteLine("Orders with no customers:"); var ordersNoCustomers = orderIDs.Except(customerIDs); foreach (var item in ordersNoCustomers) { Console.Write("{0} ", item); } Console.WriteLine(); Console.WriteLine("All Customer and Order IDs:"); var allCustomerOrderIDs = orderIDs.Union(customerIDs); foreach (var item in allCustomerOrderIDs) { Console.Write("{0} ", item); } Console.WriteLine();
七、Join 查询
var queryResults = from c in customers join o in orders on c.ID equals o.ID select new { c.ID, c.City, SalesBefore = c.Sales, NewOrder = o.Amount, SalesAfter = c.Sales+o.Amount }; foreach (var item in queryResults) { Console.WriteLine(item); }