简体   繁体   English

Linq查询按多个项目分组

[英]Linq query for group by multiple item

I have a linq query which is working fine.How can i use group by in this query.I need to group by username and itemid and i should get sum(Amount)(All are in table called Carts) 我有一个运行良好的linq查询。如何在此查询中使用分组依据。我需要按用户名和itemid分组,我应该获得sum(Amount)(全部在称为Carts的表中)

          FoodContext db = new FoodContext();

          List<CartListing> fd = (from e in db.FoodItems
                              join o in db.Carts on e.itemid equals o.itemid
                             where e.itemid == o.itemid
                                  select new CartListing
                               {
                                   Itemname =e.itemname,
                                   Amount =o.amount,
                                   Price=(float)(e.price*o.amount),

                               }).ToList();
          CartModel vm = new CartModel { CartListings = fd };

I can't see username anywhere in your code example, but to group by Itemname and sum Amount , you would something like: 我在您的代码示例中的任何地方都看不到username ,但是Itemname和sum Amount进行分组,您将像:

    var grouped = fd.GroupBy(
                      cl => cl.Itemname,
                      (key, group) => new CartListing
                      {
                          Itemname = key,
                          Amount = group.Sum(cl => cl.Amount),
                          Price = group.Sum(cl => cl.Price)
                      });

To also group by username, just generate a text key containing both values, for instance delimited by a character you know will be contained in neither. 要同时按用户名分组,只需生成一个包含两个值的文本键,例如,用一个您知道两者都不包含的字符分隔即可。

Use: 采用:

var grouped = fd.GroupBy((a => new { a.itemid,a.name }) into grp 
              select new MyClass
              {
                  MyProperty1=grp.key.itemid,
                  MyProperty2 =grp.Sum(x=>x.whatever)
              }

Public MyClass
{
   public string MyProperty1 {get;set;}
   public int MyProperty2 {get;set;}
}

This way it won't be anonymous 这样就不会是匿名的

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM