在LINQ帮助分组

时间:2017-04-13 20:17:10

标签: c# linq

如何使用GROUP BY转换此工作查询?假设我想按o.Name分组。

List<MultipleTableQueryResultVM> VMList = new 
   List<MultipleTableQueryResultVM>();
var query_1 = (from t in db.Transactions 
               join c in db.Customers on t.CustomerID equals c.CustomerID 
               join o in db.Orders on c.CustomerID equals o.CustomerID 
               where t.CommerceTransID != null && o.Name == "VIP Tickets"
                  select new { Name = c.firstName, TransID = t.CommerceTransID, 
                  Tipo = o.Type, Nombre = o.Name });

foreach (var item in query_1)
{
   MultipleTableQueryResultVM objcvm = new MultipleTableQueryResultVM();
   objcvm.firstName = item.Name;
   objcvm.CommerceTransID = item.TransID;
   objcvm.Type = item.Tipo;
   objcvm.Name = item.Nombre;
   VMList.Add(objcvm);
}

1 个答案:

答案 0 :(得分:0)

测试一下。

foreach (var item in query_1.GroupBy(x=> x.Name).Select(x=> x.First()))
{
   MultipleTableQueryResultVM objcvm = new MultipleTableQueryResultVM();
   objcvm.firstName = item.Name;
   objcvm.CommerceTransID = item.TransID;
   objcvm.Type = item.Tipo;
   objcvm.Name = item.Nombre;
   VMList.Add(objcvm);
}