2010-07-23 70 views
1

我有“Contains”方法,但我需要一个“Not Contains”方法。有什么建议么?我如何获得不包含列表中的数据?

var ResultsOfMPD = (from m in engMpdMultiSelect 
        where engMpdMultiItems.Select(o => o.ENG_MPD_MYTECHNIC_TASK_NO). 
        Contains(m.ENG_MPD_MYTECHNIC_TASK_NO) 
        select m); 

有没有这样的方法?

var ResultsOfMPD = (from m in engMpdMultiSelect 
        where engMpdMultiItems.Select(o => o.ENG_MPD_MYTECHNIC_TASK_NO). 
        NOTContains(m.ENG_MPD_MYTECHNIC_TASK_NO) 
        select m); 

回答

6

使用!运营商,像这样:

var ResultsOfMPD = from m in engMpdMultiSelect 
        where !engMpdMultiItems.Select(o => o.ENG_MPD_MYTECHNIC_TASK_NO). 
        Contains(m.ENG_MPD_MYTECHNIC_TASK_NO) 
        select m; 

顺便说一句,你不需要Select()电话。
相反,你可以写

var ResultsOfMPD = from m in engMpdMultiSelect 
        where !engMpdMultiItems.Any(o => o.ENG_MPD_MYTECHNIC_TASK_NO == m.ENG_MPD_MYTECHNIC_TASK_NO) 
        select m; 

或者等价地,

var ResultsOfMPD = from m in engMpdMultiSelect 
        where engMpdMultiItems.All(o => o.ENG_MPD_MYTECHNIC_TASK_NO != m.ENG_MPD_MYTECHNIC_TASK_NO) 
        select m; 
+0

我该如何使用? !()包含(... – Penguen 2010-07-23 14:15:24

+0

如果Foo()返回布尔值,那么!Foo()返回相反的值,因此如果是engMpdMultiItems.Select()。Contains()返回布尔值,!engMpdMultiItems.Select()。Contains()返回相反。 – Tergiver 2010-07-23 14:21:53

0
var ResultsOfMPD = from m in engMpdMultiSelect 
        where engMpdMultiItems.All(x => x.ENG_MPD_MYTECHNIC_TASK_NO != m.ENG_MPD_MYTECHNIC_TASK_NO) 
        select m; 
0

怎么样Except method

仅供参考 - 在集合论中,这称为相对补偿。也就是说,给定两个集合A和B,B中但不是A中所有元素的集合被称为集合A相对于集合B的相对补集。但不包含或除外。

相关问题