c# - linq distinct 或 group by 多个属性

标签 c# linq group-by distinct

如何使用 C# 和 Linq 从下一个列表中获取结果:

 var pr = new List<Product>()
   {
       new Product() {Title="Boots",Color="Red",    Price=1},
       new Product() {Title="Boots",Color="Green",  Price=1},
       new Product() {Title="Boots",Color="Black",  Price=2},

       new Product() {Title="Sword",Color="Gray", Price=2},
       new Product() {Title="Sword",Color="Green",Price=2}
   };

结果:

        {Title="Boots",Color="Red",  Price=1},               
        {Title="Boots",Color="Black",  Price=2},             
        {Title="Sword",Color="Gray", Price=2}

我知道我应该使用 GroupByDistinct,但了解如何获得所需的内容

   List<Product> result = pr.GroupBy(g => g.Title, g.Price).ToList(); //not working
   List<Product> result  = pr.Distinct(...);

请帮忙

最佳答案

它按需要的属性分组并选择:

List<Product> result = pr.GroupBy(g => new { g.Title, g.Price })
                         .Select(g => g.First())
                         .ToList();

关于c# - linq distinct 或 group by 多个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20582391/

相关文章:

c# - Entity Framework 包含一个条件

mysql检查组中是否存在值

PHP/MySQL 按列对结果进行分组

c# - 如何为动态创建的标签添加点击事件

c# - 您能否在迭代期间在 LINQ 语句中实时设置/更新值?

c# - 选择子句为空

c# - 如何对具有相同子对象列表的对象进行分组?

c# - default(IntPtr) 在外部函数中合法吗?

c# - Azure Functions V2 将 HttpRequest 反序列化为对象

c# - 在 SQL Server Management Studio 中执行一个简单的存储过程