Изменить выражение LINQ, чтобы принять предложение IN - PullRequest
0 голосов
/ 16 февраля 2011

Я пытаюсь изменить следующую строку кода, чтобы принять старое доброе предложение IN.

var searchResults =  (
    from s in allSites
    orderby s.SiteDescription
    where s.SiteDescription.StartsWith(siteDescription) &&
          s.SiteLocation != null
    select s);

Я смотрел на примеры, но быстро никуда не деться.

Я хотел бы добавить что-то вроде:

WHERE s.SiteStatusId IN (3,4,5)

Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 16 февраля 2011

Чтобы сгенерировать предложение IN, используйте Contains() для некоторой коллекции.

var query = from s in allSites
            orderby s.SiteDescription
            where s.SiteDescription.StartsWith(siteDescription)
               && s.SiteLocation != null
               && new[] { 3, 4, 5 }.Contains(s.SiteStatusId)
            select s;
0 голосов
/ 16 февраля 2011
 var siteStatusIds = new [] { 3, 4, 5 };
 var searchResults =  (
     from s in allSites
     orderby s.SiteDescription
     where s.SiteDescription.StartsWith(siteDescription) &&
           s.SiteLocation != null &&
           siteStatusIds.Contains(s.SiteStatusId)
     select s);
0 голосов
/ 16 февраля 2011

Попробуйте:

var ids = new [] { 3, 4, 5 };

var searchResults = from s in allSites
                    where ids.Contains(s.Id)
                    select s;

Я думаю, что делает то, что вы хотите, но уже давно, как я сделал LINQ to SQL ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...