0

我尝试使用带有 linq 的存储过程。

如果result.FirstOrDefault().CustomerName为空,我得到以下异常,

NullReferenceException 是未处理
的对象引用未设置为对象的实例

使用以下代码:

var result = context.sp_CustomerInformation(CustomerId).ToList();
var MyCustomerName = result.FirstOrDefault().CustomerName;

我哪里做错了?

4

1 回答 1

1

您遇到了该错误,因为FirstOrDefault()当结果不匹配时将返回类型的默认值。在这种情况下,默认值为 null。所以你试图访问一个 null 对象的属性,这将导致一个NullReferenceException.

你需要这样的东西:

var result = context.sp_CustomerInformation(CustomerId).ToList();
var object = result.FirstOrDefault();
var MyCustomerName = "";

if(object != null)
    MyCustomerName = object.CustomerName;
else
    // do something here if there were no results

对于它的价值,您也可以结合您的result查询:

var result = context.sp_CustomerInformation(CustomerId).FirstOrDefault();

而不是ToList()将返回所有匹配的记录。FirstOrDefault只会得到第一条记录。然后你就可以使用result而不是object上面的例子。

于 2013-09-27T13:45:33.140 回答