Мне нужно немного помочь, чтобы написать этот запрос linq - PullRequest
0 голосов
/ 27 августа 2009

У меня есть этот запрос 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

в этом запросе есть одна переменная, ее номер 2 в предложении select (первая строка) и "= 2" в предложении from (в середине)

Я написал то, что хотел, посмотрите мой ответ ниже

Ответы [ 2 ]

0 голосов
/ 27 августа 2009

Линкер - твой друг. http://www.sqltolinq.com. Позволяет конвертировать практически все sql в linq и работает с вашей базой данных и dbml. Это никогда не подводило меня до сих пор. Это не бесплатный продукт, но стоит денег. [У меня нет никаких связей с Линкером]

0 голосов
/ 27 августа 2009

после долгой попытки / повторной попытки / попытки / повторной попытки вот что я хотел ....

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...