НЕ в пункте для LINQ? - PullRequest
       0

НЕ в пункте для LINQ?

4 голосов
/ 01 апреля 2011

Я создаю запрос LINQ и хочу иметь предложение NOT IN в стиле SQL, чтобы убедиться, что мой результат не содержит одно из значений из списка, разделенного запятыми.

Я не смог найти предложение NOT IN для LINQ. Пожалуйста, предложите решение.

Ответы [ 3 ]

3 голосов
/ 01 апреля 2011

Вам нужно сделать! Содержащийся в коллекции объектов, которые вы хотите исключить.

var excluded = new[] { 3, 7, 19, 41 };
var v = from i in Enumerable.Range(0, 100)
        where !excluded.Contains(i)
        select i;
2 голосов
/ 01 апреля 2011

Вам понадобится оператор множеств .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 со сложными типами.

1 голос
/ 01 апреля 2011

Как то так ...

string items = "1,2,3,4";
var subList = items.Split(',');
var result = list.Where(item=>!subList.Contains(item.SomeStringField));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...