2016-06-06 7 views
0

У меня есть две таблицы - внизу, как видно из базы данныхLinq to EF запрос с критерием фильтра

| Страна | ID int | Имя varchar |

| Car | ID int | Имя varchar | CountryId INT FK в Страну

  1. Мне нужно, чтобы выбрать все автомобили в стране с ID 1

  2. мне нужно все автомобили в странах с ID 2 и 3 Whos иды (автомобиль) в (4,5)

Использование EF У меня есть запрос ниже.

 List<int> listOfCountries = new List<int> { 1,2,3 }; 

     var query = (
      from country in context.Countries.AsNoTracking() 
      join car in context.Cars.AsNoTracking() on new { CountryID = country.ID} 
          equals new { CountryID = cars .CountryID } 
      where listOfCountries.Contains(prv.CountryID) 
      select car); 

Есть ли другой способ сделать это вместо использования профсоюза? Нужен ли мне пример случая, например, если идентификатор страны не равен (1), а затем отфильтровать идентификатор автомобиля в (4,5), как это достигается? Благодарю.

+1

Разве это не просто заявление или в WHERE? – MarkB

ответ

3

Если я правильно понимаю ваш вопрос, это может быть его:

List<int> listOfCountries = new List<int> { 2,3 }; 
List<int> listOfCarIds = new List<int> { 4,5 }; 

var query = from car in context.Cars.AsNoTracking() 
where car.Country.Id = 1 || (listOfCountries.Contains(car.Country.Id) && listOfCarIds.Contains(car.Id)) 
Смежные вопросы