Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理Linq2Sql列表中的空值_C#_Asp.net_Linq To Sql_Anonymous Types - Fatal编程技术网

C# 如何处理Linq2Sql列表中的空值

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 {

我的列表中有几个字段,其中一些字段为空,因为它们在基础表中没有记录。因此,在将其与repeater控件绑定时,我得到了
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-同意-您添加了一个用于显示的属性,而不是更改了属性声明;所以这并不违反我描述的规则。不过,我见过与我共事的人这样做:)