繁体   English   中英

LINQ的嵌套组

[英]Nested group with LINQ

我正在尝试使用LINQ对项目列表进行分组以在转发器中显示。 我有一个查询,几乎可以满足我的需求,但不完全是。

我的数据看起来像

Cart object 
{ID: 10, isInventory: True, Pricing: 4},
{ID: 10, isInventory: True, Pricing: 20},
{ID: 10, isInventory: False, Pricing: 5},
{ID: 10, isInventory: False, Pricing: 23},
{ID: 74, isInventory: False, Pricing: 7}

我想按isInventory分组,然后按ID分组。 目前,我有一个查询接近但仍然不正确。

var grouped = from cart in shoppingCart.Cart
                      group cart by cart.IsInventoryStorage into Cart1
                      from CartGroup in
                          (from cart in Cart1
                           group cart by cart.BranchID)
                      group CartGroup by CartGroup.Key;

看起来好像已经正确分组了,但是isInventory上的Keys ,我理想地希望它是key.isInventory然后按key.ID对这些组中的每一个进行排序。

谢谢

这可以通过查询语法中的orderby完成。 请注意,后续订购条件通过逗号分隔。

void Main()
{
    var cart = new List<Cart>();

    cart.Add(new Cart { ID = 10, isInventory = true, Pricing = 4 });
    cart.Add(new Cart { ID = 10, isInventory = true, Pricing = 20});
    cart.Add(new Cart { ID = 10, isInventory = false, Pricing = 5});
    cart.Add(new Cart { ID = 10, isInventory = false, Pricing = 23});
    cart.Add(new Cart { ID = 74, isInventory = false, Pricing = 7});

    var grouped = from c in cart
                  orderby c.isInventory, c.ID
                  select c;

    grouped.Dump();
}

public class Cart
{
    public int ID { get; set; }
    public bool isInventory { get; set; }
    public int Pricing { get; set; }

}

这样输出数据:

10 False 5 
74 False 7 
10 False 23 
10 True 4 
10 True 20 
var cart=new []{
    new {ID= 10, isInventory= true, Pricing= 4},
    new {ID= 10, isInventory= true, Pricing= 20},
    new {ID= 10, isInventory= false, Pricing= 5},
    new {ID= 10, isInventory= false, Pricing= 23},
    new {ID= 74, isInventory= false, Pricing= 7}
};

var results=cart.GroupBy(c=>c.isInventory)
    .SelectMany(grp1=>grp1.GroupBy(th=>th.ID),(grp1,grp2)=>new {grp1=grp1,grp2=grp2})
    .GroupBy(temp0=>temp0.grp1.Key,temp0=>temp0.grp2)
    .Dump();

结果:

在此处输入图片说明

暂无
暂无

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

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