【发布时间】:2012-06-25 10:46:02
【问题描述】:
这应该很简单,但我在这个问题上没有任何进展。我想编写一个 LINQ 语句,该语句返回与给定 ID 匹配的人并包含一组访问。我能做到的。现在,我只需要包含活动访问,即仅当 IsActive 标志为真时才包含访问。我的查询包括在下面。我做错了什么?
var inmate = this.db.Inmates.Where(p => p.Id == id).Include(p => p.Visits.Where(v => v.IsActive)).FirstOrDefault();
更新 #1 - 我也试过这个说法:
var inmate = this.db.Inmates.Include(p => p.Visits).Where(p => p.Id == id && p.Visits.Any(v => v.IsActive)).FirstOrDefault();
【问题讨论】:
-
你见过这个SO问题stackoverflow.com/questions/1680863/…吗?
-
我相信您正在尝试进行有条件的急切加载,当您访问 inmateObject.Visits 时,您只需要活动访问列表。这已经在这里讨论过了; stackoverflow.com/questions/3718400/conditional-eager-loading
-
@prashantht 我同意。除了他们在您的链接中建议的方式之外,我真的认为没有其他方法可以做到这一点。