如何让NON包含列表中的数据?

Pen*_*uen 1 c# linq visual-studio-2008 visual-studio

我有"包含"方法,但我需要一个"不包含"方法.有什么建议?

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);
Run Code Online (Sandbox Code Playgroud)

有没有这样的方法?

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);
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 7

使用!运算符,如下所示:

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;
Run Code Online (Sandbox Code Playgroud)

顺便说一下,你不需要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;
Run Code Online (Sandbox Code Playgroud)

或者,等效地,

var ResultsOfMPD = from m in engMpdMultiSelect
                   where engMpdMultiItems.All(o => o.ENG_MPD_MYTECHNIC_TASK_NO != m.ENG_MPD_MYTECHNIC_TASK_NO)
                   select m;
Run Code Online (Sandbox Code Playgroud)