[英]I would need a little help to write this linq query
我有這個SQL查詢
select case when AllowanceId is null then 2 else AllowanceId end as AllowanceId
, d.descen as domdescen
, t.descen as typdescen
, case when qty is null then 0 else qty end as qty
, u.descen as unidescen
from (select t.allowancetypeid, d.allowancedomainid
from allowancedomain as d, allowancetype as t
where t.allowancetypeid in (1,2) and d.active = 1 and t.active = 1) as a left join
allowanceqty as q on a.allowancetypeid = q.allowancetypeid and
a.allowancedomainid = q.allowancedomainid and
q.allowanceid = 2 inner join
allowancedomain as d on a.allowancedomainid = d.allowancedomainid
inner join
allowancetype as t on a.allowancetypeid = t.allowancetypeid
inner join
unit as u on case when q.unitid is null then 1 else q.unitid end = u.unitid
該查詢中有一個變量,它在select子句(第一行)中為2,在from子句中(中間)為“ = 2”
我寫了我想要的東西,下面看我的答案
經過長時間的嘗試/重試/嘗試/重試,這就是我想要的...。
from a in (from d in AllowanceDomains _
from t in AllowanceTypes _
where (new integer(){1,2}).contains(t.AllowanceTypeID) and t.active = true and d.active=true _
select t.allowancetypeid,tdescen =t.descen, d.allowancedomainid,ddescen=d.descen) _
group join qqq in AllowanceQties on new with {.k1 = a.allowancetypeid, .k2 = a.allowancedomainid, .k3 = 2} equals _
new with {.k1 = qqq.allowancetypeid, .k2 = qqq.allowancedomainid, .k3 = qqq.allowanceid} into qq = group _
from q in qq.DefaultIfEmpty _
join u in units on if(object.equals(q.unitid,nothing),1,q.unitid) equals u.unitid _
select AllowanceID =if(object.equals(q.AllowanceID,nothing),2,q.AllowanceID) ,a.tdescen,a.ddescen,qty = if(object.equals(q.qty,nothing),0,q.qty),u.descen
Linqer是您的朋友。 http://www.sqltolinq.com 。 它允許您將幾乎所有的sql轉換為linq,並可以與數據庫和dbml一起使用。 到目前為止,這從未使我失敗。 它不是免費產品,但物有所值。 [我與Linqer沒有任何關聯]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.