Linq 到实体子查询
Posted
技术标签:
【中文标题】Linq 到实体子查询【英文标题】:Linq to entities subquery 【发布时间】:2015-04-21 16:09:03 【问题描述】:如何在 Linq 中编写以下子查询:
Context.Set<Process>()
.Include(...)
.Where(x => x.Activity.Name.CompareTo(Context.Set<Activity>().Where(a => a.Id == activityId).Select(c => a.Name)) > 0)
.Take(1);
这是一个简化版的查询,WHERE 子句只包含不工作的部分。如果我将 Context.Set().... 子查询更改为字符串常量,则查询有效。事实上,它给出了 NotSupportedException
LINQ to entities does not recognize method Set<Activity>
【问题讨论】:
如果您明确使用您的活动 DbSet 会发生什么:Context.Activities.Where(...)? 【参考方案1】:试试这个:
(from p in context.Set<Process>().Include(...)
from a in context.Set<Activity>()
where a.Id == activityId
where p.Activity.Name.CompareTo(a.Name) > 0
select p).Take(1);
【讨论】:
以上是关于Linq 到实体子查询的主要内容,如果未能解决你的问题,请参考以下文章