Как использовать 'Sql in' с шаблоном хранилища ASP.NET MVC - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть SQL-запрос:

select * 
from press 
where compId = 36 
  and categories in (1, 7, 21);

Я пытался применить его в формате шаблона хранилища ASP.NET MVC:

 iPressRepository.GetAll().Where(x => (x.compId == 36)).ToList();

Но мой результат неверен, потому чтоЯ пропустил категории «во» во втором запросе.Есть ли способ применить оператор IN с шаблоном хранилища?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 14 сентября 2018
var categoriesToLookFor = new[] { 1, 7, 21 };
var press = iPressRepository.GetAll()
                            .Where(x => (x.compId == 36) && (categoriesToLookFor.Contains(x.categories)))
                            .ToList();
0 голосов
/ 14 сентября 2018

Если вы используете GetAll () , вы получите все данные из SQL, но вам нужны только некоторые данные, поэтому вам следует использовать AsQueryable ()

Репозиторий:

public IQueryable<T> AsQueryable()
{
    return _entities.AsQueryable();
}

Контроллер:

var list = iPressRepository.AsQueryable()
        .Where(i => (new[] { 1, 7, 21 }).Contains(i.categories) && i.compId == 36).ToList();
0 голосов
/ 14 сентября 2018

Я предполагаю, что должно быть что-то вроде этого

iPressRepository.GetAll().Where(x => (x.compId == 36)&&(x.categories==1||x.categories==7||x.categories==21)).ToList();
...