我正在查询一组实体框架对象并通过 WCF RIA 服务将它们投影到灯光开关中。
在我的查询中,我在几个表之间执行连接,其中一个是汇总表的详细信息。我想确定哪个详细项目是列表中的“第一个”项目,并在枚举期间将其与我的投影中的当前项目进行比较。在投影中我想更改我的哪些可用属性设置这个特定投影的属性的原因。
这是这样减少的查询
var result = (from dataItem in (from x in Context.xs
join y in Context.ys
on x.property = y.property
select new {x, y})
.Select( (model, index) =>
new ObjectType
{
Id = index,
OneOfTwo = model.x.property,
(
from y in Context.ys
where y.SomeProperty == model.Property
select y)
.OrderBy(list=>list.Id)
.FirstOrDefault()
.ComparedProperty ==model.ComparedProperty
)
? model.AnotherProperty
: model.YetAnotherProerty
}
);
我如何评估该内部查询而不会遇到 DataReader 错误,因为我试图在读取上下文时使用它?
更新:
我做了一些研究并意识到这不是 linq to sql 的问题,而是 linq to entity 的问题。本质上,该操作相当于使用不支持的参数化查询。在这种情况下有什么解决方法?