C# 如何处理Linq2Sql列表中的空值
我的列表中有几个字段,其中一些字段为空,因为它们在基础表中没有记录。因此,在将其与repeater控件绑定时,我得到了C# 如何处理Linq2Sql列表中的空值,c#,asp.net,linq-to-sql,anonymous-types,C#,Asp.net,Linq To Sql,Anonymous Types,我的列表中有几个字段,其中一些字段为空,因为它们在基础表中没有记录。因此,在将其与repeater控件绑定时,我得到了NullReferenceException 那么,我应该怎么做,在绑定时处理null,或者是否有其他方法,以便repeater、datalist或gridview自动处理null值 注意:我在我的aspx页面中使用了,并且从数据库FieldName是null 请指导我……您可以向实体类添加一些计算属性 像这样: public string DisplayName {
NullReferenceException
那么,我应该怎么做,在绑定时处理null,或者是否有其他方法,以便repeater、datalist或gridview自动处理null值
注意:我在我的aspx页面中使用了
,并且从数据库FieldName
是null
请指导我……您可以向实体类添加一些计算属性 像这样:
public string DisplayName
{
get
{
return this.Name ?? "N/A";
}
}
如果名称为空,则返回名称或预定义字符串。您可以向实体类添加一些计算属性 像这样:
public string DisplayName
{
get
{
return this.Name ?? "N/A";
}
}
如果名称为空,这将返回名称或预定义字符串。自第一次添加以来,我已更改了此答案,但它以更紧凑的形式合并了原始答案的两部分。这将处理离散null和DBNull.Value
<%# (Eval("FieldName") ?? DBNull.Value) != DBNull.Value ?
Eval("FieldName") : "" %>
由于Eval的双重调用,效率有点低-您可以通过向控件的基类添加一个helper方法来解决这个问题
我不建议修改类属性代码,除非该类仅用于显示,因为当值为null时,您将更改属性get的语义
如果字段实际上不应该为null,那么类和数据库上应该有防止出现null的门。自从第一次添加以来,我已经更改了这个答案,但它以更紧凑的形式合并了我原始答案的两个部分。这将处理离散null和DBNull.Value
<%# (Eval("FieldName") ?? DBNull.Value) != DBNull.Value ?
Eval("FieldName") : "" %>
<%# Eval("FieldName") ?? "" %>
由于Eval的双重调用,效率有点低-您可以通过向控件的基类添加一个helper方法来解决这个问题
我不建议修改类属性代码,除非该类仅用于显示,因为当值为null时,您将更改属性get的语义
如果该字段实际上不应该为null,那么在类和数据库上应该有防止出现null的门。
<%# Eval("FieldName") ?? "" %>
+1,我还没有想到这一点,虽然我猜可能是DBNull和null,但您可能需要扩展这种情况下的示例。如果您的编辑引用了我的答案(关于属性getter),那么我不同意。这不是关于修改,而是关于为此目的添加一个只读属性,这没关系。@UrbanEsc-同意-您添加了一个用于显示的属性,而不是更改了属性声明;所以这并不违反我描述的规则。我见过和我一起工作的人这样做:)+1,没想到,虽然我猜可能是DBNull和null,但你可能想扩展你的示例。如果您的编辑引用了我的答案(关于属性getter),那么我不同意。这不是关于修改,而是关于为此目的添加一个只读属性,这没关系。@UrbanEsc-同意-您添加了一个用于显示的属性,而不是更改了属性声明;所以这并不违反我描述的规则。不过,我见过与我共事的人这样做:)