问题描述
selecta.code,b.name,(selecttop1isnull(desc,'')fromtb_cwherecode=a.codeandYEAR(keepdate)=YEAR(@date)andMONTH(keepdate)='1')asN'1月描述'fromtb_aaleftjointb_bbona.id=b.id
主要是字段里是SQL语句,这linq弄了好久没弄出来,在线求解
解决方案
解决方案二:
你这段sql语句能查询吗?isnull(desc,'')这个里面的保留字括号也没有,可以查询?你最好重开贴,加点分,你自己都搞了几天了,怎么才40分啊。
解决方案三:
fromaindb.tb_ajoinbindb.tb_bona.idequalsb.idintoj1frombinj1.DefaultIfEmpty()joincindb.tb_cona.codeequalsc.codeintoj2fromcinj2.DefaultIfEmpty()selectnew{a.code,name=b==null?"":b.name,desc=c==null?"":c.desc}
解决方案四:
少了where部分了将db.tb_c改成db.tb_c.Where(i=>SqlFunctions.DatePart("year",i.keepdate)==2015&&SqlFunctions.DatePart("month",i.keepdate)==1)
解决方案五:
当然这个where加载最下面,join完之后也可以
解决方案六:
selecta.code,b.name,(selecttop1isnull(desc,'')fromtb_cwherecode=a.codeandYEAR(keepdate)=YEAR(@date)andMONTH(keepdate)='1')asN'1月描述',(selecttop1isnull(desc,'')fromtb_cwherecode=a.codeandYEAR(keepdate)=YEAR(@date)andMONTH(keepdate)='2')asN'2月描述',(selecttop1isnull(desc,'')fromtb_cwherecode=a.codeandYEAR(keepdate)=YEAR(@date)andMONTH(keepdate)='3')asN'3月描述'fromtb_aaleftjointb_bbona.id=b.id
这样能拼出来么
解决方案七:
你按上面的一样写啊,不过如果你这个是要行列转换的话,那么还是将所有数据都读取出来后,在程序里面进行group吧
解决方案八:
加分之后怎么不回一下帖子,嘎嘎inty=2015;int[]mArr={1,2,3};//月范围varquery=tb_a.GroupJoin(tb_b,a=>a.id,b=>b.id,(a,b)=>b.Select(p=>new{a.code,p.name,月描述=tb_c.Select(s=>s.Year==y&&mArr.Contains(s.Month)).ToDictionary(s=>s.Month,s=>s.desc)})).SelectMany(p=>p);foreach(varsinquery){Console.WriteLine(s.code+""+s.name+"1月描述"+(s.月描述.ContainsKey(1)?s.月描述[1]:""));}
解决方案九:
s.Year跟s.Month都改成s.keepdate.Year跟s.keepdate.Month你再调试调试这样查,月描述按字典出来,随你查几个月
解决方案十:
月描述查询的那一段,跟你那个还少了个wherecode=a.code的条件,我全部重新写一下吧inty=2015;int[]mArr={1,2,3};//月范围varquery=tb_a.GroupJoin(tb_b,a=>a.id,b=>b.id,(a,b)=>b.Select(p=>new{a.code,p.name,月描述=tb_c.Select(s=>s.code==a.code&&s.keepdate.Year==y&&mArr.Contains(s.keepdate.Month)).ToDictionary(s=>s.keepdate.Month,s=>s.desc)})).SelectMany(p=>p);
解决方案十一:
我用的是Nhibernate,对LinQ有些不一定支持。没办法用CreateSQLQuery,拼SQL语句了。
解决方案十二:
你建立视图,随后查询就变得简单了。