所以我有以下LINQ查询:高级LINQ查询帮助
var qryVans = from v in objContext.vans
join s in objContext.schools on v.schoolID equals s.schoolID
join l in objContext.locations on v.lastKnownLocationID equals l.locationID
select new DisplayVan {
vanID = v.vanID,
vanName = v.vanName,
phone = v.phone,
capacity = (int)v.capacity,
schoolName = s.schoolName,
lastLocationName = l.locationName,
statusNote = v.statusNote,
isOffline = (v.isOffline == 1) ? true : false,
isPrayerRoom = (v.isPrayerRoom == 1) ? true : false,
isNotReady = (v.isNotReady == 1) ? true : false,
creationDate = v.creationDate,
modifiedDate = v.modifiedDate,
vanAssignments = from a in v.vanAssignments
where a.vanID == v.vanID
select a
};
所有工作正常,但我需要填补VanAssignment
实体的导航属性。请注意,在我的DisplayVan
投影中,我使用嵌套查询来收集给定面包车的面包分配。 vanAssignment
实体有一个人实体。那么如何在这个查询中加载vanAssignment.person
属性?
另外,我可以写这个更有效吗?
感谢您的帮助!
编辑
这里就是我上面的代码失败:
后,我在查询执行toList()以上,我会尝试访问所需要的人是这样的:
List<DisplayVan> lstVans = qryVans.toList<DisplayVan>();
foreach(DisplayVan objVan in lstVans) {
Console.WriteLine(objVan.person.firstName);
}
现在,由于我没有使用vanAssignment实体加载person实体,因此person导航属性为null,并且会引发错误。
我的问题围绕正确的方式加载这个人实体以及vanAssignment?
希望有所帮助。
这不是问题的答案,但(v.isOffline == 1)? true:false不是必需的。只需使用(v.isOffline == 1),因为它是一个布尔值。不需要条件表达式。 – 2011-02-13 16:47:34
我不明白这个问题。你能否显示你使用的代码,哪里出错? – 2011-02-13 16:49:07