我正在创建一个LINQ查询,我希望有一个SQL样式的NOT IN子句,以确保我的结果没有逗号分隔列表中的一个值。
我找不到LINQ的NOT IN子句。请提出解决方案。
答案 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));