2013-09-27 48 views
0

我尝试使用带有linq的存储过程。通过使用存储过程,Linq数据不能为空

如果result.FirstOrDefault().CustomerName是空的,我得到下面的异常,

的NullReferenceException是不设置到对象的实例

用下面的代码未处理
对象引用:

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

我哪里错了?

回答

1

您正遇到该错误,因为FirstOrDefault()将在结果不匹配时返回该类型的默认值。在这种情况下,默认值为空。所以你试图访问一个空对象的属性,这将导致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

+0

感谢您的时间。 –