Supose我有一個表「available_cars」[car_id,descritpion]和另一個表「cars_x_client」[client_id,car_id]。我如何查詢客戶沒有的所有汽車?我該如何在Linq中「查找非重合」查詢?
我知道在SQL中做它。也許這是一塊蛋糕,但我不知道如何在Linq中做到這一點。
Supose我有一個表「available_cars」[car_id,descritpion]和另一個表「cars_x_client」[client_id,car_id]。我如何查詢客戶沒有的所有汽車?我該如何在Linq中「查找非重合」查詢?
我知道在SQL中做它。也許這是一塊蛋糕,但我不知道如何在Linq中做到這一點。
爲了有效地做到這一點,你可以使用一個連接 - 這將轉換爲內連接在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示例 - http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx
試試這個。
from car in available_cars
where !cars_x_client.Any(x => x.client_id == client_id
&& x.car_id == car.car_id)
select car;
我用了「除」方法來檢索兩個數據集之間的差異。 – Alex 2011-04-01 12:43:25