gpt4 book ai didi

c# - 如何使用 LINQ 按组选择具有重复列的记录?

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:24 24 4
gpt4 key购买 nike

由于某些原因,一些记录具有相同的 ID。目的是列出所有具有相同 ID 的整条记录。例如,如何使用 LINQ 按 GroupId 对以下记录进行分组,并找到具有相同 ID 的所有记录并将它们全部列出? (从而将每组中的所有行合并为一个)

var list = new List<Record>()
{
new Record() { GroupId = 0, ValueA = 20, ValueB = 300 },
new Record() { GroupId = 1, ValueA = 30, ValueB = 700 },
new Record() { GroupId = 1, ValueA = 40, ValueB = 500 },
new Record() { GroupId = 2, ValueA = 80, ValueB = 300 },
new Record() { GroupId = 2, ValueA = 20, ValueB = 200 },
new Record() { GroupId = 2, ValueA = 20, ValueB = 200 }
};

预期结果是最后 5 条记录。

最佳答案

另一种方式是:

var results = (from l in list
group new {l.ValueA, l.ValueB} by l.GroupId
into g
select new {GroupId = g.Key, Values = g.ToList()}).ToList();

如果你更喜欢lambda表达式,那么

var results = (list.GroupBy(l => l.GroupId, l => new {l.ValueA, l.ValueB})
.Select(g => new {GroupId = g.Key, Values = g.ToList()})).ToList();

这应该为您提供基于唯一 GroupId 以及其他关联值的记录。

编辑

foreach (var result in results)
{
foreach (var value in result.Values)
{
int valueA = value.ValueA;
int valueB = value.ValueB;
}
}

我认为您正在寻找与此类似的东西。

希望对您有所帮助。

关于c# - 如何使用 LINQ 按组选择具有重复列的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21085669/

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