【问题标题】:How can I assign an auto-incrementing ID per group in LINQ?如何在 LINQ 中为每个组分配一个自动递增的 ID?
【发布时间】:2016-05-20 14:28:19
【问题描述】:

我想按名称和数量对我的数据进行分组,返回的每个组都必须有一个唯一的 ID,该 ID 在数据中每组递增。

这是相关的代码:

return JsonConvert.SerializeObject(
                data.GroupBy(x=> new {x.Name, x.Amount})
                    .Where(gp => gp.Count() > 1)
                    .Select(
                        gp =>
                            new Group
                            {
                                GroupData = gp.Select(el => new GroupItem
                                {
                                    Name = el.Name,
                                    Amount = el.Amount,
                                    GroupId = <missing>
                                })
                            }));

我发现了几个关于为组中的每一行添加增量 ID 的问题,每个组都会重置,但是我希望组是这样的:

Group = {"bob", 145.20, 1},
        {"bob", 145.20, 1},
Group = {"steve", 120.00, 2},
        {"steve", 120.00, 2}..... etc  

我找到的唯一示例是在 SQL 中执行此操作,而在 C# 中我需要在 LINQ 中执行此操作。

【问题讨论】:

    标签: c# linq group-by grouping


    【解决方案1】:

    您也可以使用Select 重载来传递索引:

    return JsonConvert.SerializeObject(
        data.GroupBy(x=> new {x.Name, x.Amount})
            .Where(gp => gp.Count() > 1)
            .Select((gp, idx) =>
                    new Group
                    {
                        GroupData = gp.Select(el => new GroupItem
                        {
                            Name = el.Name,
                            Amount = el.Amount,
                            GroupId = idx
                        })
                    }));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 2016-08-04
      • 2015-05-03
      • 2022-08-15
      • 2018-01-28
      • 2020-10-27
      • 2019-07-21
      相关资源
      最近更新 更多