2009-08-27 8 views
0

J'ai cette requête SQLje besoin d'un peu d'aide pour écrire cette requête LINQ

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 

il y a une variable dans cette requête et il est numéro 2 dans la clause select (première ligne) et « = 2 »dans la clause (au milieu)

J'ai écrit ce que je voulais, regardez ma réponse ci-dessous

Répondre

0

après une longue essai/nouvelle tentative/essayer/réessayer voici ce que je voulais ....

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 
0

Linqer est votre ami. http://www.sqltolinq.com. Il vous permet de convertir presque tout sql en linq et fonctionne avec votre base de données et dbml. Cela ne m'a jamais manqué jusqu'ici. Ce n'est pas un produit gratuit mais ça vaut vraiment le coup. [Je n'ai aucune association avec Linqer]

+1

pouvez-vous me montrer ce que linqer générerait pour ma requête sql? – Fredou

Questions connexes