我正在制作一个基于实体框架和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)");
我得到试图枚举结果时出现错误:
“由于物化值为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
我不想过滤掉它们,因为我仍然希望所有参与者都显示。 – 2012-02-17 16:23:50
@MrBell因此,如果参与者没有ParticipantTeam,那么您希望在返回结果的CaptainPickupFlg字段中做什么?对或错? – 2012-02-17 16:45:52
既不,也不应该为null – 2012-02-17 19:25:16