gpt4 book ai didi

c# - 如何在linq中将树展平到表中

转载 作者:行者123 更新时间:2023-11-30 17:25:39 24 4
gpt4 key购买 nike

我有一个列表:

List<DataBanerModel> banerData = new List<DataBanerModel>();
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 1, Box = 1 });
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 1, Box = 2 });
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 1, Box = 3 });
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 2, Box = 1 });
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 2, Box = 2 });
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 2, Box = 3 });
banerData.Add(new DataBanerModel { Shop = 1, Cartoon = 3, Box = 1 });
banerData.Add(new DataBanerModel { Shop = 2, Cartoon = 1, Box = 1 });
banerData.Add(new DataBanerModel { Shop = 2, Cartoon = 1, Box = 2 });
banerData.Add(new DataBanerModel { Shop = 2, Cartoon = 1, Box = 3 });
banerData.Add(new DataBanerModel { Shop = 3, Cartoon = 1, Box = 1 });
banerData.Add(new DataBanerModel { Shop = 3, Cartoon = 1, Box = 2 });
banerData.Add(new DataBanerModel { Shop = 3, Cartoon = 1, Box = 3 });
banerData.Add(new DataBanerModel { Shop = 3, Cartoon = 2, Box = 1 });
banerData.Add(new DataBanerModel { Shop = 3, Cartoon = 2, Box = 2 });

我得数一数有多少Box es 将在 Cartoon 中s 和多少 Cartoon s 将在 Shop ,所以结果应该是这样的:

Shop: 1, Cartoons: 3, Boxes: 3
Shop: 1, Cartoons: 3, Boxes: 3
Shop: 1, Cartoons: 3, Boxes: 1
Shop: 2, Cartoons: 1, Boxes: 3
Shop: 3, Cartoons: 2, Boxes: 3
Shop: 3, Cartoons: 2, Boxes: 2

到目前为止我写道:

var step4 = banerData.GroupBy(x => x.Shop)
.Select(s => new
{
Shops = s.Key,
Cartoons = s.GroupBy(y => y.Cartoon)
.Select(k => new
{
k.Key,
Boxes = k.GroupBy(z => z.Box)
.Select(p => p.Key).ToList()
}).ToList()
}).ToList();

它工作正常,但我不知道如何压平这棵树。

最佳答案

你可以使用:

  var grouped = banerData
.GroupBy(d => d.Shop)
.Select(g => new
{
Shop = g.Key,
Cartoon = g.Select(i => i.Cartoon).Distinct().Count(),
Box = g
.GroupBy(i => i.Cartoon)
.Select(gr => gr.Select(i => i.Box).Distinct().Count())
.ToArray()
}).SelectMany(i => i.Box.Select(ii => new { i.Shop, i.Cartoon, Box = ii }))
.ToList();

关于c# - 如何在linq中将树展平到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58087180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com