【发布时间】:2014-08-08 18:29:58
【问题描述】:
我希望有人从这个问题中抓住了这个想法,但我不知道如何更好地总结它。
问题是我尝试在应用程序中进行简单搜索。我有 Question 和 Tag 实体,例如 StackOverflow 中的这些实体 - 在多对多关系中。
我将一组标签 ID 传递给我的过滤方法。它应该返回所有具有此标签(带有此 ID)的 Question 实体。我是这样做的:
int[] tagIds = { 1, 2, 3};
var questions = myEntities.Questions
.ToList()
.Where(q => tagIds.Intersect(q.Tags.Select(t => t.Id).ToArray()).Any())
.ToList();
一切正常,但现在我添加了更多过滤器,并且更多方法使用此过滤器,所以我想获取 DbQuery 对象,而不是 List。
我尝试删除 .ToList() 表达式,以获得适当的结果:
int[] tagIds = { 1, 2, 3};
var questions = myEntities.Questions
.Where(q => tagIds.Intersect(q.Tags.Select(t => t.Id).ToArray()).Any());
不幸的是,我收到一个异常,指出 LINQ 无法识别 .ToArray() 方法。谁能给我一个更好的想法如何实现这一目标?
【问题讨论】:
-
我认为你不需要在那里使用 toArray
-
是的!谢谢你,你是对的。您可以将此作为答案发布,以便我将其标记为最佳。再次感谢!
标签: c# linq entity-framework linq-to-entities intersect