c# - LINQ:分组依据,并检索公共(public)属性

标签 c# linq

我有以下数据集,它存储在名为 list1 的变量中。

countrypk | countryname | statepk | statename
---------------------------------------------
1           USA           1         New York
1           USA           2         California
2           Canada        3         Manitoba

我希望能够按国家/地区分组,并检索国家/地区名称。

我有以下 LINQ 可以实现该效果,但想知道是否有更好或更直接的方法在 LINQ 中实现此目的。

var finalList = list1
    .GroupBy(item => item.countrypk)
    .Where(item => item.Count() > 0)
    .Select(item => item.First())

所需的输出是:

countrypk | countryname 
---------------------------------------------
1           USA                  
2           Canada        

最佳答案

不需要添加Where。如果您有一个组,则其中至少包含一个项目。你可以这样做:

list1.GroupBy(item => item.countrypk)
     .Select(item => new { item.Key, item.First().countryname} );

或者使用 GroupBy 的不同重载:

list1.GroupBy(item => item.countrypk, 
              selector => new { selector.countrypk, selector.countryname} )
     .Select(group => group.First())

关于c# - LINQ:分组依据,并检索公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43643001/

相关文章:

c# - 使用 HttpClient 压缩对 asp.net core 2 站点的请求的最佳方法是什么?

c# - 如何正确保护忘记密码端点

c# - Angular 在 ASP.NET MVC 之上,显示错误

C# LINQ - 按类中的列表类型属性过滤

c# - 无法将类型 'IEnumerable<XElement>'隐式转换为 'bool'

c# - 使用 C++ 或 C# 打开之前的全局检测文件信息

c# - 如何在 C# 的下拉列表中获取当前星期几

c# - LINQ 中的多个 .Where() 语句是性能问题吗?

c# - Linq 中使用哪些方法强制从数据库中检索数据

c# - Linq 按 bool 值排序