具有求和函数和嵌套记录的 Linq 组



有一个集合:

List<Tuple<string, string, int>> sales = new List<Tuple<string, string, int>> {
            Tuple.Create("Store 1", "Product 1", 1000),
            Tuple.Create("Store 2", "Product 2", 2000),
            Tuple.Create("Store 3", "Product 3", 1500),
            Tuple.Create("Store 3", "Product 3", 10000)};

我想得到这棵树:

Store 1, Product 1, 1000
   Store 1, Product 1, 1000
Store 2, Product 2, 2000
   Store 2, Product 2, 2000
Store 3, Product 3, 11500
   Store 3, Product 3, 1500
   Store 3, Product 3, 10000

我使用此 linq 查询来构建树:

var group = from sale in sales
        group sale by new { sale.Item1, sale.Item2 } into g
        select new { g.Key.Item1, g.Key.Item2, Sum = g.Sum(e => e.Item3),nestedsales = (from s in g select s) };

和这个代码输出:

foreach (var e in group)
{
    Console.WriteLine(e.Item1 + ", " + e.Item2 + ", " + e.Sum);
    foreach(var sale in e.nestedsales )
    {
        Console.WriteLine('t' + sale.Item1 + ", " + sale.Item2 + ", " + sale.Item3);
    }
}

它工作正常!我只是想知道,这是最佳查询吗?我的意思是,是否可以在不添加第四个字段的情况下构建树 - 查询结果中嵌套销售?

是的,"nestedsales"不是必需的:

var group = sales.GroupBy(sale=>new { sale.Item1, sale.Item2 });
foreach (var e in group)
{
    Console.WriteLine(e.Key.Item1 + ", " + e.Key.Item2 + ", " + e.Sum(t=>t.Item3));
    foreach (var sale in e)
    {
        Console.WriteLine('t' + sale.Item1 + ", " + sale.Item2 + ", " + sale.Item3);
     }
 }

相关内容

  • 没有找到相关文章

最新更新