c# – 实体框架包括Where
发布时间:2020-12-15 04:11:23 所属栏目:百科 来源:网络整理
导读:如果我有一个如下所示的查询: var forms = repo.GetForms().Where(f = f.SubForms.Any(sf = sf.Classes.Any(c = c.TermId == termId))); 从这里你可以看到我的架构如下: SubForm有许多具有多个Term的Class. 我想要的是: 所有SubForms及其在特定术语中的类
如果我有一个如下所示的查询:
var forms = repo.GetForms().Where(f => f.SubForms.Any(sf => sf.Classes.Any(c => c.TermId == termId))); 从这里你可以看到我的架构如下: SubForm有许多具有多个Term的Class. 我想要的是: 所有SubForms及其在特定术语中的类. 现在发生的事情是我获得了在特定术语中具有任何类的所有SubForm.这意味着SubForm会返回所有子类,而不仅仅是与Term相关的子类. 例如.我有2个术语,每个术语有2个类的子表单.此查询返回4个类而不是该特定术语中的2个类. 是否有任何Include(‘Expression’)可以用来表示我只想根据条件包含所有类?或者我的查询错了? 解决方法
用这个:
var subForms = repo.GetSubForms.Select(sf = new { SubForm = sf,Classes = sf.Classes.Where(c => c.TermId == termId) }).ToList() .Select(t => t.SubForm) .ToList(); 更新:根据@ Slauma的评论: 如果你想加载他们有任何具有Term by termId的Class的SubForms,你可以从end到begin;像这样: var subForms = repo.Terms.Where(t => t.Id == termId).Select(t => new { Term = t,Class = t.Class,SubForm = t.Class.SubForm }).ToList() .Select(t => t.SubForm).ToList(); 或者以最简单的方式,您可以在您的期限上使用Include,请参阅: var subForms = repo.Terms.Include("Class.SubForm").Where(t => t.Id == termId) .Select(t => t.Class.SubForm).ToList(); 注意:正如我从您的问题中可以理解的那样,您有这样的关系: SubForm has_many Class has_many Term 但是,您提供的代码显示的是这样的关系: SubForm has_many Class Term has_many Class 如果可以的话,请提出您的实体,或者更多地解释他们之间的关系.谢谢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Cocos2d-X3.0 刨根问底(四)----- 内存管理源码
- c# – IIS 7 – .NET可扩展性和ASP.NET之间的区别
- xStream完美转换XML、JSON /XStream Xml与JavaBe
- 苹果编程语言 Swift 2.2 发布:支持 Ubuntu Linu
- Flex 4.1 + BlazeDS(Demo实例)实现信息订阅推送
- 关于IAR中将字符串存到flash的理解
- 适时开始自己写工具吧——JsonUtils
- 快速乘法模2 ^ 16 1
- cocos2dx 用字符串创建按钮之 ControlButton
- SQLiteException:errorcode 5: database is loc
热点阅读