【发布时间】:2012-02-17 15:25:30
【问题描述】:
我正在制作一个基于 Entity Framework 和 Scott Guthrie 的 Dynamic Linq 库的报告工具。
当相关记录并不总是存在时,我在尝试从相关表中选择不可为空的字段时遇到了障碍。例如,我有一个 Participant 表,其中包含一个 Team 表的可为空的外键。这是因为有些参与者会在一个团队中,有些则不会。问题是我想提取一份报告,其中显示参与者列表以及他们在团队中的一些团队信息。团队表中的一列不可为空,因此当我尝试使用标准投影或动态投影选择它时:
var standardProjection = data.Select(i => new
{
i.FirstName,
i.ParticipantTeam.CaptainPickupFlg <--- Non Nullable Boolean
});
var dynamicProjection = data.Select("new (FirstName, ParticipantTeam.CaptainPickupFlg)");
尝试枚举结果时出现错误:
“转换为值类型 'Boolean' 失败,因为具体化的值为 null。结果类型的泛型参数或查询必须使用可为空的类型。”
我怎样才能避免这个错误,而只是将 ParticipantTeam.CaptainPickupFlg 物化为匿名类型中的可为空的布尔值?
ScottGu 的动态 Linq:http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
【问题讨论】:
-
这能回答你的问题吗? Convert my value type to nullable equivalent
标签: c# entity-framework dynamic-linq