var depts = ctx.Departments
.OrderBy(d => d.deptName)
.Select(d => d.deptNo);
foreach (int deptNumber in depts) {
var deptReports = from d in ctx.Departments
join r in matchingIncidents on d.deptNo equals r.deptNo
where r.deptNo == deptNumber
select r;
int deptReportsCount = deptReports.Count();
我完全不知所措!关于这个错误的所有问题都说在原始字段(例如ID)上使用==,我正在做。我对此查询所做的任何操作都会生成异常。完全相同的代码之前工作,我不知道我做了什么!有人可以向我解释发生了什么事吗?
另外,我记得有一个EntityFramework类,其中的方法允许您在查询中转换对象(例如日期),有没有人知道这个类是什么?
更新:
以下是我所做的更改(现在可以使用)。
var deptReports = from r in matchingIncidents
join d in ctx.Departments on r.deptNo equals d.deptNo
where r.deptNo == deptNumber
select r;
答案 0 :(得分:2)
matchingIncidents
看起来像是复杂类型的本地集合(因为您使用的是r.deptNo
)。 LINQ to Entities中不允许这样做。你可以试试这个:
foreach (int deptNumber in depts) {
var deptReports = from d in ctx.Departments
join r in matchingIncidents.Select(m => m.deptNo)
on d.deptNo equals r
where r == deptNumber
select r;
int deptReportsCount = deptReports.Count();
matchingIncidents.Select(m => m.deptNo)
现在是原始类型的本地集合,deptReports
是int
的序列(假设deptNo
的类型为int
)。但是为了计算得到的元素,它应该仍然没问题。
修改强>
您可能正在搜索静态EntityFunctions
类:
http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.aspx
答案 1 :(得分:0)
问题可能是:
join r in matchingIncidents on d.deptNo == r.deptNo