Я создаю запрос LINQ и хочу иметь предложение NOT IN в стиле SQL, чтобы убедиться, что мой результат не содержит одно из значений из списка, разделенного запятыми.
Я не смог найти предложение NOT IN для LINQ. Пожалуйста, предложите решение.
Вам нужно сделать! Содержащийся в коллекции объектов, которые вы хотите исключить.
var excluded = new[] { 3, 7, 19, 41 }; var v = from i in Enumerable.Range(0, 100) where !excluded.Contains(i) select i;
Вам понадобится оператор множеств .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 со сложными типами.
Как то так ...
string items = "1,2,3,4"; var subList = items.Split(','); var result = list.Where(item=>!subList.Contains(item.SomeStringField));