2009-11-09 91 views
0

我有一个项目的IList数据的列表,看起来榜单:如何筛选重复的列表项

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

我想从我的列表中有测试模式== 0如果同一genid,配置除去genid,配置指数有一个测试模式== 1.

确实有人有一个简洁的方式做到这一点?

回答

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的元素,并排除该记录是否存在。

+0

这样做的工作 - 谢谢。 – CurlyFro 2009-11-09 19:40:36