使用条件过滤器的 Linq to EF 查询

Linq to EF query with criteria filter

我有两个表 - 下面是在数据库中看到的

|国家 |身份证 |名称 varchar |

|汽车 |ID 整数 |名称变量 | CountryID int FK 到国家

  1. 我需要 select ID 为 1

  2. 国家/地区的所有汽车
  3. 我还需要 ID 为 2 和 3 的国家/地区的所有汽车,其 ids(car) 在 (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);

除了使用 union 之外,还有其他方法可以做到这一点吗?我是否需要一个案例陈述,例如当国家 ID 不等于 (1) 然后过滤 (4,5) 中的汽车 ID,这是如何实现的?谢谢。

如果我没有正确理解你的问题,可能是这样:

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))