如何处理Linq2Sql列表中的空值

时间:2011-09-02 07:23:13

标签: c# asp.net linq-to-sql anonymous-types

我的列表中有一些字段,其中一些字段为空,因为它们在基础表中没有记录。因此,当它与转发器控件绑定时,我得到NullReferenceException

那么,我应该怎么做,在绑定时处理null或者是否有任何其他方法,以便转发器或datalist或gridview将自动处理null值。

注意:我在我的aspx页面中使用<%# Eval("FieldName")%>,而在数据库FieldName中使用的是null

请指导我......

3 个答案:

答案 0 :(得分:2)

自从第一次添加以来,我已经改变了这个答案 - 但它以更紧凑的形式包含了我原来答案的两个部分。这将处理谨慎的null和DBNull.Value。

<%# (Eval("FieldName") ?? DBNull.Value) != DBNull.Value ? 
     Eval("FieldName") : "" %>

由于Eval的双重调用,它有点效率低下 - 您可以通过向控件的基类添加辅助方法来解决这个问题。

我不建议修改类属性代码,除非该类纯粹仅用于显示,因为当值为null时,您将更改属性get的语义。

如果该字段实际上不应为null,那么您应该在类和数据库上设置阻止空值发生的门。

答案 1 :(得分:2)

<%# Eval("FieldName") ?? "" %>

答案 2 :(得分:1)

您可以向实体类添加一些计算属性。

像这样:

public string DisplayName
{
     get
     {
         return this.Name ?? "N/A";
     }
}

如果Name为null,这将返回Name或预定义的字符串。