我想按名称和金额对数据进行分组,每个返回的组必须具有唯一的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。
答案 0 :(得分:2)
您也可以使用传递索引的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
})
}));