How can I use Linq to get distinct results filtered by property
本问题已经有最佳答案,请猛点这里访问。
对于此类:
1 2 3 4 5 6 | public class Tool { public int Id { get; set; } public int Number { get; set; } public string Source { get; set; } } |
以及类似的工具列表:
1 2 3 4 5 6 7 8 9 |
如何使用LINQ按编号获取不同工具的列表,如果两个工具的编号相同,请选择源代码为"M1"的工具,即结果列表将包含:
1 2 3 | Tool {Id=777, Number=121, Source="M1"} Tool {Id=848, Number=51, Source="M1"} Tool {Id=555, Number=61, Source="Master"} |
1 2 3 4 | List<Tool> distinctTool = tools .GroupBy(p => p.Number) .Select(g => g.OrderByDescending(q => q.Source =="M1").First()) .ToList(); |
你需要把你的
1 2 3 4 | List<Tool> distinctTool = tools .GroupBy(p => p.Number) .Select(g => g.OrderByDescending(q => q.Source =="M1").First()) .ToList(); |
尝试按数字分组并获取第一个元素,
1 2 3 | List<Tool> distinctTool = tools.GroupBy(p => p.Number) .Select(f => f.OrderByDescending(q => q.Source =="M1").First()) .ToList(); |