8,497
社区成员
发帖
与我相关
我的任务
分享
var query = (from s in db.Subject
join q in db.Questions
on s.sub_ID equals q.sub_ID
into ww
from xx in ww.DefaultIfEmpty()
where (s.sub_tp_ID == sub_tpid && ww.Count() >= 0)
group new { xx.qus_ID, xx.sub_ID, s.Sub_name }
by new { s.Sub_name, xx.sub_ID } into zz
select new
{
id = zz.Key,
name = zz.Key.Sub_name,
count = (int)zz.Count(t => zz.Key.sub_ID > -1)
});
var query = (from s in db.Subject
join q in db.Questions
on s.sub_ID equals q.sub_ID
into ww
from xx in ww.DefaultIfEmpty()
where (s.sub_tp_ID == sub_tpid && ww.Count() >= 0)
group new { xx.qus_ID, s.sub_ID, s.Sub_name }
by new { s.Sub_name, xx.sub_ID,subID=s.sub_ID } into zz
select new
{
subID=zz.Key.subID,
name = zz.Key.Sub_name,
count = (int)zz.Count(t => zz.Key.sub_ID > -1)
});
首先感谢下@xdashewan 给的提示。从中找到突破口
改动的位置在by 这一块制定规则里,再加一个subID=s.sub_ID,注意xx.sub_ID不能删掉。(删掉后得出的结果集会有问题,具体为什么我也是刚开始接触linq没几天还没研究透彻,抱歉)
select new 里面的subID引用新加的subID.
---------------------------------------
关键点:1、首先关联查询两张表的数据放入一个临时表中(注意要左联。linq的DefaultIfEmpty()实现)
2、在分组规则里对加上要查询的表id,在临时表内取。在新定义个K赋值原表的id(这块不明白,知道的朋友可以留言告知。不胜感激)