【发布时间】:2019-10-02 20:31:33
【问题描述】:
IQueryable a;
IQueryable b;
IQueryable res = from ab in a.Union(b)
select {
prop = ab.prop,
deletable = ab.type == CONSTANT_TYPE &&
(from d in deletableTable
where key = CONSTANT_KEY
select d).FirstOrDefault().RenderCode == CONSTANT_RENDER_CODE
};
return res;
上面的代码引发了错误
b出现在两个结构不兼容的初始化中 在单个 LINQ to Entities 查询中。一个类型可以在 同一查询中的两个位置,但前提是设置了相同的属性 在这两个地方,并且这些属性的设置顺序相同。
我不确定是什么原因,但我猜,当我返回 IQueryable 时,它无法构建 sql 字符串,因为 d in deletableTable ? true : false。
在 sql 中是这样的
SELECT
case
when (SELECT TOP 1 code FROM deletable) = CONSTANT then true
else false
end
如果我想返回 IQueryable,linq 是否存在一些解决方法?
【问题讨论】:
-
d in deletableTable ? true : false在您的查询中出现在哪里?您的代码似乎没有显示任何可能产生该错误的内容。 -
@NetMage你说得对我错过了重要的细节,但当时我不知道这很重要,我已经解决了这个问题,查看答案了解详情
标签: c# sql linq entity-framework-6