で条件に種類に参加:変更は、私は、このような参加持っ例えばLINQ
from cust in customerList
join prod in productList on cust.ProductId equals prod.Id
join veh in vehicleList on prod.VehicleId equals veh.Id into v
from veh in v.DefaultIfEmpty()
select new {customerName = cust.Name, customerVehicle=veh.VehicleName}
あなたは右がある見ることができるように3行目と4行目に参加。私は、この結合をパラメータ化された方法で行いたいと思っています。
string x ="right";
if(x == right) //execute right join
{
from cust in customerList
join prod in productList on cust.ProductId equals prod.Id
join veh in vehicleList on prod.VehicleId equals veh.Id into v
from veh in v.DefaultIfEmpty()
select new {customerName = cust.Name, customerVehicle=veh.VehicleName}
}
else //execute inner join
{
from cust in customerList
join prod in productList on cust.ProductId equals prod.Id
join veh in vehicleList on prod.VehicleId equals veh.Id
select new {customerName = cust.Name, customerVehicle=veh.VehicleName}
}
私はif
声明でこれを行うことができますが、私はあまりにも多くのコードがあると思いますし、あまりにも多くの繰り返しがあります:私はこれに参加変更したい変数を、持っている場合を意味します。ですから、join
行内の三項演算子を使ってこの条件を適用できますか?前もって感謝します。
EDIT:
私はこのquestionで示唆されているように、私はif文でこれを行うことができます言ったように。しかし、私の元のコードには13のネストされた結合が含まれています。あらゆる可能性についてifsを書くと、非常に醜いコードになるでしょう。それで私を助けてくれますか?
可能な重複に参加左.com/questions/7767847/conditional-join-in-linq) –
これは本当に数十回前に尋ねられています。あなたは質問を投稿する前にgoogleしましたか? –
@CamiloTerevintoはい私はグーグルで、私は前にそのページを見ました。しかし、これは私の質問に答えるものではありません。私は本当に答えを見ることができませんでした。 – jason