Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# dapper linq对象引用未设置为对象的实例_C#_Linq_Dapper - Fatal编程技术网

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

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

我有一个简单的客户表,有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");
公共字符串用户名{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));