未设置为对象实例的对象引用
本文关键字:对象引用 实例 对象 设置 | 更新日期: 2023-09-27 18:07:05
我有一个简单的客户表,有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
,所以它得到:
对象引用未设置为对象的实例
为什么在Dapper中使用linq那么棘手,我做错了吗?
您可以使用string.Equals()
与StringComparison
类型:
var a = data.FirstOrDefault(f => string.Equals(f.Email, "test@test.com", StringComparison.OrdinalIgnoreCase));
这工作,因为Equals()
不会抛出一个空引用异常,当任何一个参数是null
。StringComparison.OrdinalIgnoreCase
表示不区分大小写
这将摆脱你的空引用异常:
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");