LINQ的NOT IN子句?

时间:2011-04-01 14:41:06

标签: linq linq-to-sql

我正在创建一个LINQ查询,我希望有一个SQL样式的NOT IN子句,以确保我的结果没有逗号分隔列表中的一个值。

我找不到LINQ的NOT IN子句。请提出解决方案。

3 个答案:

答案 0 :(得分:3)

您需要对要排除的对象集合执行!包含。

var excluded = new[] { 3, 7, 19, 41 };
var v = from i in Enumerable.Range(0, 100)
        where !excluded.Contains(i)
        select i;

答案 1 :(得分:2)

您需要.Except()设置运算符。

var results = list1.Except(list2);

http://blogs.msdn.com/b/charlie/archive/2008/07/12/the-linq-set-operators.aspx http://www.hookedonlinq.com/ExceptOperator.ashx

注意:您必须实现iEqualityComparor才能使用复杂类型的Except方法。

答案 2 :(得分:1)

像这样......

string items = "1,2,3,4";
var subList = items.Split(',');
var result = list.Where(item=>!subList.Contains(item.SomeStringField));
相关问题