我有一个包含许多重复记录的表。如何使用 C# Linq 查询按多个字段分组,同时获取不同记录的 ID。
例如:我有一个看起来像这样的 Store 表
Store
-----
ID, StoreName, Address1
1, CVS, 123 Main Street
2, CVS, 123 Main Street
3, CVS, 456 Main Street
Run Code Online (Sandbox Code Playgroud)
我想按 storeName 然后按 address1 分组,但还要获取第一个不同(storeName 和 address1)记录的 ID。
我只想要这两个记录:
1, CVS, 123 Main Street
3, CVS, 456 Main Street
Run Code Online (Sandbox Code Playgroud)
我尝试使用匿名对象,但无法弄清楚如何在不按 ID 分组的情况下获取 ID。
当您GroupBy在 LINQ 中使用时,您会得到一个实现接口的类的可枚举IGrouping<TKey,TElement>-TElement代表已分组的单个和原始元素。
因此你会像这样分组
var grouped = myList.GroupBy(x => new {x.StoreName,x.Address1});
Run Code Online (Sandbox Code Playgroud)
这会给你一个可枚举的列表IGrouping<anonymous,Store>(假设原始对象被称为Store)。的anonymous是具有2个属性的匿名对象StoreName和Address1。
现在,可枚举中的每个项目本身都是可枚举的Store,并且您可以像对待任何其他可枚举一样对待它 -First().ID如果您愿意,您可以使用它,并且如果您想要的话,您可以将整个项目投影回可枚举
var result = myList.GroupBy(x => new {x.StoreName,x.Address1});
.Select(g => new {
g.Key.StoreName,
g.Key.Address1,
FirstID = g.First().ID
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3226 次 |
| 最近记录: |