dapper linq La référence d'objet n'est pas définie sur une instance d'objet

c# dapper linq

Question

J'ai une table client simple qui a 4 enregistrements, et un seul a l'email

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");

puisque d'autres éléments ont email = null , il obtient donc:

La référence d'objet n'est pas définie à une instance d'un objet

Pourquoi est-ce si difficile d'utiliser linq avec Dapper, est-ce que je me trompe?

Réponse populaire

Vous pouvez utiliser string.Equals() avec un type StringComparison :

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

Cela fonctionne puisque Equals() ne lancera pas une exception de référence null lorsque l'un des arguments est null . StringComparison.OrdinalIgnoreCase indique que la comparaison est insensible à la casse.



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi