.net 我怎样才能做一件事;“定位不重合”;Linq中的查询?

.net 我怎样才能做一件事;“定位不重合”;Linq中的查询?,.net,linq,.net,Linq,假设我有一个表“available\u cars”[car\u id,description]和另一个表“cars\u x\u client”[client\u id,car\u id]。我如何查询客户没有的所有汽车 我知道用SQL来做。也许这是小菜一碟,但我不知道在Linq怎么做。试试这个 from car in available_cars where !cars_x_client.Any(x => x.client_id == client_id

假设我有一个表“available\u cars”[car\u id,description]和另一个表“cars\u x\u client”[client\u id,car\u id]。我如何查询客户没有的所有汽车

我知道用SQL来做。也许这是小菜一碟,但我不知道在Linq怎么做。

试试这个

from car in available_cars
where !cars_x_client.Any(x => x.client_id == client_id 
                         && x.car_id == car.car_id)
select car;

为了有效地执行此操作,您可以使用联接-这将在SQL中转换为内部联接:

var query = from available in available_cars
    join client_car in cars_x_client on available.car_id equals client_car.car_id
    where client_car.client_id != my_client_id
    select car;
还有一些机制可用于外部连接-例如,如果有一辆车不属于任何客户机,则使用类似于:

var query = from available in available_cars
    join client_car in cars_x_client on available.car_id equals client_car.car_id into outer_join
    from outer in outer_join.DefaultIfEmpty
    where (outer == null || outer.client_id != my_client_id)
    select car;
有关linq(包括连接)的更多信息,我推荐101个linq示例-

我使用“.Except”方法检索两个数据集之间的差异。