【问题标题】:select width entity framework and linq选择宽度实体框架和 linq
【发布时间】:2010-05-17 09:14:52
【问题描述】:
你有 2 个表任务和任务日,关系为 1..n
我想选择所有具有名为“可见”= true 属性的任务日的任务
我试过了:
db.TDP_Missioni.Include("TDP_MissioniDestinazioni").where(p => p.TDP_MissioniDestinazioni.visible == true)
但是有一个错误。事实上,从 p.TDP_MissioniDestinazioni 我看不到表的属性。我认为这是因为关系是 1..n.
我该怎么做?
谢谢
【问题讨论】:
标签:
c#
asp.net
linq
entity-framework
【解决方案1】:
由于关系是 1:N,因此 TDP_MissionDestinazioni 应该是一个 collection 的宣教日。试试这个:db.TDP_Missioni.Include("TDP_MissioniDestinazioni").where(p => p.TDP_MissioniDestinazioni.All(d => d.visible))
【解决方案2】:
以上使用的是 Lambda 表达式而不是 LINQ。试试:
var query = from m in db.TDP_Missioni
where m.TDP_MissioniDestinazioni.Any(md => md.Visible)
select m;
或者要修复你的 lambda 查询,你需要做的就是使用类似的东西:
db.TDP_Missioni.Include("TDP_MissioniDestinazioni").
Where(p => p.TDP_MissioniDestinazioni.Any(d => d.Visible));
与 TDP_Missioni 表相关的 TDP_MissioniDestinazioni 是一个集合(基于关系),因此您需要遍历每个记录,以便能够访问每个 MissionDay 的 visible 属性。