我有项目列表IList的数据看起来列出这个:
GenId TestMode
1 0
1 1
3 0
3 1
4 NULL
2 NULL
如果相同的GenId有一个TestMode == 1,我想从列表中删除GenId的索引,其中包含TestMode == 0。
有人有简洁的方法吗?
答案 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,并排除如果该记录存在。