【发布时间】:2009-07-06 22:08:36
【问题描述】:
我有一个奇怪的 linq 子查询问题。
给定以下数据结构:
父母子女
-------- --------
身份证号码
父 ID
地点
有福
(显然这不是真正的结构,但对于这个例子来说已经足够接近了)
我能够运行此查询并获得所需的结果:
bool b = (from p in Parents
from c in Children
where p.Id == 1 && c.ParentId == p.Id && c.Location == "Home"
select c.HasFoo).SingleOrDefault();
因此,如果有一个孩子的位置为“家”的父级 ID 为 1,我将获得该孩子的“HasFoo”值,否则,我将获得 false,这是一个“默认”值布尔值。
但是,如果我尝试编写查询,那么我有一个父对象列表,如下所示:
var parentList = from p in Parents
select new ParentObject
{
ParentId = p.ParentId,
HasHomeChildren = p.Children.Count(c => c.Location == "Home") > 0,
HasHomeChildrenWithFoo = (from c in p.Children where c.Location == "Home" select c.HasFoo).SingleOrDefault()
}
遍历列表时出现以下错误:
不能将 null 值分配给 System.Boolean 类型的成员,该类型是不可为 null 的值类型。
但是,我看不出这个“null”值是从哪里来的。
【问题讨论】:
标签: linq linq-to-sql