Как мне выполнить запрос, используя несколько строк в операторе where в LINQ

#linq #linq-to-sql

#linq #linq-to-sql

Вопрос:

Мне интересно, как и могу ли я запрашивать несколько строк / целых чисел, легко выполняя что-то подобное?

 var test = from a in db.PlasserLans
from b in db.Ulans
where a.registeredNick == b.Username amp;amp;
a.Nick == {"Ayuris" , "Crey" , "DjMofasa" , "esel" , "Firaxa" , 
           "Kindleguy" , "Michigo" , "moiC" ,"Shibiz"}
orderby a.Nick
select new
{
    Nick = a.Nick,
    Username = b.Username,
    Email = b.UserEMail,
    RealName = b.UserRealname,
};
  

Ответ №1:

Вы можете создать список перед запросом, что облегчило бы его понимание. Также вы можете выполнить объединение вместо зацикливания на обеих таблицах.

 List<string> nickList=new List<string> {"Ayuris" , "Crey" , "DjMofasa" , "esel" , "Firaxa" , "Kindleguy" , "Michigo" , "moiC" ,"Shibiz"};

var test = from a in db.PlasserLans
           join b in db.Ulans
           on a.registeredNick equals b.Username
           where nickList.Contains(a.Nick)
           orderby a.Nick
           select new
                  {
                      Nick = a.Nick,
                      Username = b.Username,
                      Email = b.UserEMail,
                      RealName = b.UserRealname,
                  };
  

Ответ №2:

В Linq-2-sql все наоборот

  where .... amp;amp;
 {"Ayuris" , "Crey" , "DjMofasa"}.Contains(a.Nick)
  

Это наизусть, не уверен, работает ли прямое использование {}, но вам нужно проверить .Содержит () для linq-2-sql, и это будет работать.

Комментарии:

1. Мне пришлось сначала создать массив, запустив его непосредственно в {} не работает. заставил это работать, используя ваш способ косвенно