首页 新闻 会员 周边 捐助

不能在查询运算符(Contains 运算符除外)的 LINQ to SQL 实现中使用本地序列。

0
悬赏园豆:50 [已解决问题] 解决于 2014-03-23 19:26

var query = default(IEnumerable<SchoolJoinCountItem>);

//获取学校的报名竞赛
var schoolsign = (from sign1 in db.JS_SchoolSign
select new { SchoolId = sign1.SchoolId, ProjectId = sign1.JS_Subject.ProjectId }).Union(
from sign2 in db.JS_StudentSign
select new { SchoolId = sign2.SchoolId,ProjectId = sign2.JS_Subject.ProjectId}
);

var projectList = FindProjectByOptions(nf,xq,jb,zl).Where(e => e.EditFlag == 2);
var data = from sp in projectList
from s in schoolsign
where sp.Id == s.ProjectId
select new
{
XXDM = s.SchoolId,
JSJB = sp.TypeId
};

//此处报错
query = from sc in db.JS_School
join sj in data on sc.Id equals sj.XXDM into p
select new SchoolJoinCountItem
{
XXDM = sc.Id,
XXMC = sc.Name,
QGJS = p.Where(e => e.JSJB == 0).Count(),
SJ1 = p.Where(e => e.JSJB == 1).Count(), //市级竞赛1数
SJ2 = p.Where(e => e.JSJB == 2).Count(), //市级竞赛2数
SJ3 = p.Where(e => e.JSJB == 3).Count(), //市级竞赛3数
SJ4 = p.Where(e => e.JSJB == 4).Count(), //市级竞赛4数
XJJS = p.Where(e => e.JSJB == 5).Count(),//县级竞赛数
Sum = p.Where(e => e.JSJB == 0).Count() +
p.Where(e => e.JSJB == 1).Count() +
p.Where(e => e.JSJB == 2).Count() +
p.Where(e => e.JSJB == 3).Count() +
p.Where(e => e.JSJB == 4).Count() +
p.Where(e => e.JSJB == 5).Count()
};
return query;

金桂花季的主页 金桂花季 | 初学一级 | 园豆:157
提问于:2014-03-19 16:41
< >
分享
最佳答案
0

data应该是在内存中的一个集合吧?

看这情况应该你想把内存中的集合和数据中的表做表连接造成的

收获园豆:50
吴瑞祥 | 高人七级 |园豆:29449 | 2014-03-20 10:05

谢谢你的答复

金桂花季 | 园豆:157 (初学一级) | 2014-03-23 19:19
其他回答(1)
0

如果我硬要将内存表和数据中的表做连接呢?有什么解决方案??本人也遇到相同的问题,求指导!

var asd = from a in ds.Tables[n2].AsEnumerable()
select a.ItemArray[random];
var tempseat = from t in db.temporary
select new
{
车次 = t.车次,
车厢号 = t.车厢号,
车厢类型 = t.车厢类型,
行 = t.行,
列 = t.列
};
var test = tempseat.Intersect(asd);//交集,我的目的就是内存表和表做交集
return test;

永恒y流星 | 园豆:204 (菜鸟二级) | 2015-04-20 21:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册