请教一个LINQ动态查询

txdyyangming 2015-03-12 10:07:08
我有Building(ID, Name)、Floor(ID, BuildingID, Name)两个表,
其中Floor表用到Building表的ID,

现在需要设计这样一个函数
List<int> GetFloorsID(int[] BuildingsID)
{
//返回Floors 的ID集合
}

//参数是Building表的ID数组,当Floor中的BuildingID在传进去的这个数组的时候,返回Floor表中ID集合。

表达能力有限,希望你们能明白我的意思
新手,怎么破?最好给下代码,谢谢了
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wjq 2015-03-13
  • 打赏
  • 举报
回复
1楼基本上是对的。是你自己代码的问题,首先人家给你的是语法写法。不是真正的代码。 你的报错是floors和BuildingsID从不同的DBContext/ObjectContext来的表达式树。你要确保他们来自同一个DBContext/ObjectContext对象,或者BuildingsID确实是一个int[]。 如果我没猜错,你的BuildingsID在你实际的代码里是别的查询结果,且没有ToArray()过。
txdyyangming 2015-03-13
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
from f in floors
where BuildingsID.Contains(f.BuildingID)
select f.ID
没有这么简单吧,出错了,错误信息如下: 查询包含对不同数据上下文上所定义项的引用。 说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.InvalidOperationException: 查询包含对不同数据上下文上所定义项的引用。
txdyyangming 2015-03-13
  • 打赏
  • 举报
回复
楼上说的都对
moonwrite 2015-03-13
  • 打赏
  • 举报
回复
1楼的语法没有错,你的错误2楼也提供可能性的解答 我以前也遇到过这个错误 把一个查询释放了,然后传给另外一个查询 所以不要随便用using,ef不需要using,他自己会释放的,你不是静态引用的话
  • 打赏
  • 举报
回复
from f in floors
where BuildingsID.Contains(f.BuildingID)
select f.ID

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧