由于某些原因,一些记录具有相同的 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/