如何筛选重复的列表项

时间:2009-11-09 16:39:21

标签: asp.net linq

我有项目列表IList的数据看起来列出这个:

GenId     TestMode
  1          0
  1          1
  3          0
  3          1
  4        NULL
  2        NULL

如果相同的GenId有一个TestMode == 1,我想从列表中删除GenId的索引,其中包含TestMode == 0。

有人有简洁的方法吗?

1 个答案:

答案 0 :(得分:1)

LINQ非常擅长针对对象集合运行操作。以下查询应该为您提供所需内容:

var query = list.Where(i => i.TestMode == 1 || 
                   !list.Exists(i2 => i2.GenId == i.GenId && i2.TestMode == 1));

foreach (var item in query) {
    // do something with items.
}

这样做的目的是查找TestMode等于1的项目(如果是,则包括),或以其他方式检查是否有另一个元素,其中TestMode等于1,并排除如果该记录存​​在。