【问题标题】:Linq Data Can Not Be Null By Using Stored Procedure使用存储过程,Linq 数据不能为空
【发布时间】:2013-10-03 20:03:27
【问题描述】:

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

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

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

使用以下代码:

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

我哪里做错了?

【问题讨论】:

    标签: c# sql linq stored-procedures entity


    【解决方案1】:

    您遇到了该错误,因为FirstOrDefault() 将在结果不匹配时返回类型的默认值。在这种情况下,默认值为 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

    【讨论】:

    • 感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多