|
Filtering |
|
var col = from o in Orders where o.CustomerID == 84 select o; |
var col2 = Orders.Where(o => o.CustomerID == 84); |
Return Anonymous Type |
|
var col = from o in orders select new { OrderID = o.OrderID, Cost = o.Cost };
|
var col2 = orders.Select(o => new { OrderID = o.OrderID, Cost = o.Cost } ); |
Ordering |
|
var col = from o in orders orderby o.Cost ascending select o;
|
var col2 = orders.OrderBy(o => o.Cost);
|
var col3 = from o in orders orderby o.Costdescending select o;
|
var col4 = orders.OrderByDescending(o => o.Cost); |
var col9 = from o in orders orderby o.CustomerID, o.Costdescending select o;
|
var col6 = orders.OrderBy(o => o.CustomerID). ThenByDescending(o => o.Cost); |
//returns same results as above var col5 = from o in orders orderby o.Costdescending orderby o.CustomerID select o; //NOTE the ordering of the orderby’s
|
Joining |
|
var col = from c in customers join o in orders on c.CustomerID equalso.CustomerID select new { c.CustomerID, c.Name, o.OrderID, o.Cost }; |
var col2 = customers.Join(orders, c => c.CustomerID,o => o.CustomerID, (c, o) => new { c.CustomerID, c.Name, o.OrderID, o.Cost } ); |
Grouping |
|
var OrderCounts = from o in orders group o by o.CustomerID intog select new { CustomerID = g.Key, TotalOrders = g.Count() }; |
var OrderCounts1 = orders.GroupBy( o => o.CustomerID). Select(g => new { CustomerID = g.Key, TotalOrders = g.Count() }); |
NOTE: |
|
Paging (using Skip & Take) |
|
//select top 3 var col = (from o in orders where o.CustomerID == 84 select o).Take(3);
|
var col2 = orders.Where( o => o.CustomerID == 84 ).Take(3);
|
//skip first 2 and return the 2 after
var col3 = (from o in orders where o.CustomerID == 84 orderby o.Cost select o).Skip(2).Take(2);
|
var col3 = (from o in orders where o.CustomerID == 84 orderby o.Cost select o).Skip(2).Take(2); |
Element Operators (Single, Last, First, ElementAt, Defaults) |
|
//throws exception if no elements var cust = (from c in customers where c.CustomerID == 84 select c).Single();
|
var cust1 = customers.Single( c => c.CustomerID == 84); |
//returns null if no elements var cust = (from c in customers where c.CustomerID == 84 selectc).SingleOrDefault();
|
var cust1 = customers.SingleOrDefault( c => c.CustomerID == 84); |
//returns a new customer instance if no elements var cust = (from c in customers where c.CustomerID == 85 select c).DefaultIfEmpty( newCustomer()).Single();
|
var cust1 = customers.Where( c => c.CustomerID == 85 ).DefaultIfEmpty(newCustomer()).Single(); |
//First, Last and ElementAt used in same way var cust4 = (from o in orders where o.CustomerID == 84 orderby o.Cost select o).Last();
|
var cust5 = orders.Where( o => o.CustomerID == 84). OrderBy(o => o.Cost).Last(); |
//returns 0 if no elements var i = (from c in customers where c.CustomerID == 85 selectc.CustomerID).SingleOrDefault();
|
var j = customers.Where( c => c.CustomerID == 85). Select(o => o.CustomerID).SingleOrDefault(); |
NOTE: Single, Last, First, ElementAt all throw exceptions if source sequence is empty. SingleOrDefault, LastOrDefault, FirstOrDefault, ElementAtOrDefault all |
Conversions |
ToArray |
select c.Name).ToArray(); |
ToDictionary |
Dictionary<string, double> customerOrdersWithMaxCost = (from oc in
(from o in orders join c incustomers on o.CustomerID equals c.CustomerID select new { c.Name, o.Cost })
group oc by oc.Name into g select g).ToDictionary(g => g.Key, g => g.Max(oc => oc.Cost)); |
ToList |
where o.Cost > 10 orderby o.Cost).ToList(); |
ToLookup |
|
[출처] LINQ의 쿼리문법과 람다문법 비교|작성자 투덜이
|