Si j'interroge une table avec une condition sur le champ clé comme dans:
var user = from u in dc.Users
where u.UserName == usn
select u;
Je sais que je n'aurai aucun résultat ou un résultat. Devrais-je toujours aller de l'avant et récupérer les résultats en utilisant une méthode pour chacun ou existe-t-il un autre moyen privilégié de gérer ce genre de situation.
Essayez quelque chose comme ça:
var user = (from u in dc.Users
where u.UserName == usn
select u).FirstOrDefault();
La méthode FirstOrDefault renvoie le premier élément d'une séquence satisfaisant une condition spécifiée ou une valeur par défaut si aucun élément de ce type n'est trouvé.
Pourquoi pas quelque chose comme
var user = dc.Users.SingleOrDefault(u=> u.UserName==usn);
Il convient également de noter que First/FirstOrDefault/Single/SingleOrDefault sont le point d'exécution d'une commande LINQ to Sql. Étant donné que l'instruction LINQ n'a pas été exécutée auparavant, elle peut affecter le SQL généré (par exemple, elle peut ajouter un TOP 1 à la commande sql).
Je voudrais utiliser First () ou FirstOrDefault ().
La différence: sur First (), une exception sera levée si aucune ligne ne peut être trouvée.
J'utiliserais la méthode SingleOrDefault.
var user = (from u in dc.Users
where u.UserName == usn
select u).SingleOrDefault();
Une autre option consiste à utiliser Contains (nom d'utilisateur) par opposition à "=="
var user = (from u in dc.UserInfo
where u.Users.Contains(username)
select u).SingleOrDefault();