C# 如何使用LINQ查找基于多个值的重复项?

C# 如何使用LINQ查找基于多个值的重复项?,c#,linq,list,duplicates,C#,Linq,List,Duplicates,假设我有以下课程: public class Test{ public string Length { get; set; } public string Width { get; set; } public string Height { get; set; } public int Count { get; set; } public string Label { get; set; } } 我想找到长度和标签值相同的项目,并计算每个项目的数量。到目

假设我有以下课程:

public class Test{
    public string Length { get; set; }
    public string Width { get; set; }
    public string Height { get; set; }
    public int Count { get; set; }
    public string Label { get; set; }
}
我想找到长度和标签值相同的项目,并计算每个项目的数量。到目前为止,我的代码如下所示:

var dups = testlist.GroupBy(i => new { i.Length, i.Label })
                   .Where(g => g.Count() >= 1)
                   .Select(g => new { Length = g.Key.Length, Label = g.Key.Label, 
                                      Count = g.Count() });
但问题是,var中的对象不再具有width或height属性(它们在g.Key中不存在)。在结果中保存其他属性时,是否仍然可以基于两个属性查找重复项?

之后

testList
  .GroupBy(i => new { i.Length, i.Label })
  .Where(g => g.Count() >= 1)

实际上,您有一个
IEnumerable
。这是一个重复列表。您还需要什么?

因为每个组中可能有多个不同宽度和高度的项,所以您需要哪些值?就像在SQL中一样,您必须选择在分组后使用哪些值。请尝试g.First()获取分组中的第一个宽度或高度。(另外,
Where
子句是多余的-如果没有具有给定标签和高度的项目,则不会为它们创建一个组。)因此,是否要所有宽度/高度的列表/集合,是否要平均值、第一值、总和、最大值、最后一个最小值,还是什么?+1,谢谢你提醒我关于匿名类型的编译器支持。对不起,我想我没有仔细考虑就问了这个问题。谢谢你的回答。