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

时间:2012-10-23 14:54:11

标签: 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; }
}

我想找到具有相同长度和标签值的项目,并计算每个项目的数量。到目前为止,我的代码看起来像:

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中)。无论如何,在结果中保存其他属性时,是否基于两个属性找到重复项?

1 个答案:

答案 0 :(得分:17)

在此之后

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

你实际上有一个IEnumerable<IEnumerable<Test>>。这是一个欺骗列表清单。你还想要什么?

相关问题