C# dapper linq对象引用未设置为对象的实例
我有一个简单的客户表,有4条记录,只有一条有电子邮件C# dapper linq对象引用未设置为对象的实例,c#,linq,dapper,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@yourstor
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");
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
............
var data=cn.Query(“从客户中选择*);
var aaa=data.FirstOrDefault(f=>f.Email.ToLower()=”admin@yourstore.com"); >> 好啊
var bbb=data.FirstOrDefault(f=>f.Email.ToLower()==“kjhkh”);
由于其他项目具有email=null
,因此它得到:
对象引用未设置为对象的实例
为什么将linq与Dapper一起使用会如此棘手,我做错了吗?这将消除空引用异常:
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");
您可以与类型一起使用:
这是因为当任一参数为
null
时,Equals()
不会引发null引用异常StringComparison.OrdinalIgnoreCase
表示比较不区分大小写。主题外,但很重要:您应该执行cn.Query(“从客户选择*).ToList()代码>。目前,您正在使用每个FirstOrDefault
语句执行查询(对于4条记录来说可能没什么大不了的,但这是关于正确的模式)。
var a = data.FirstOrDefault(f => string.Equals(f.Email, "test@test.com", StringComparison.OrdinalIgnoreCase));