dapper linq对象引用未设置为对象的实例

时间:2014-06-07 05:52:01

标签: c# linq dapper

我有简单的客户表,有4条记录,只有一条有电子邮件

public string Username { get; set; }
public string Email { get; set; }

............

var data = cn.Query<Customer>("select * from customer");

var aaa= data.FirstOrDefault(f => f.Email.ToLower() == "admin@yourstore.com"); >> ok
var bbb= data.FirstOrDefault(f => f.Email.ToLower() == "kjhkh");

因为其他项目有email = null,所以它得到:

  

对象引用未设置为对象的实例

为什么使用linq和Dapper一样棘手,我做错了吗?

2 个答案:

答案 0 :(得分:1)

您可以将string.Equals()StringComparison类型一起使用:

var a = data.FirstOrDefault(f => string.Equals(f.Email, "test@test.com", StringComparison.OrdinalIgnoreCase));

这是有效的,因为Equals()在其中一个参数为null时不会抛出空引用异常。 StringComparison.OrdinalIgnoreCase表示比较不区分大小写。

答案 1 :(得分:0)

这将消除您的空引用异常:

var aaa= data.FirstOrDefault(f => f.Email != null && f.Email.ToLower() == "admin@yourstore.com");
var bbb= data.FirstOrDefault(f => f.Email != null && f.Email.ToLower() == "kjhkh");