8
votes

Linq FirstArdefault

J'ai la requête LINQ suivante: xxx

Comment puis-je vérifier si la requête a enregistré 1 enregistrement Comme je ne peux pas faire .Compte pour obtenir le compte.


1 commentaires

Regardez la documentation de la méthode FirstArdefault. Il renvoie la valeur par défaut pour le type de données s'il n'y a aucun résultat. Si c'est un indispensable que pas plus de 1 l'enregistrement passe les critères de requête, utilisez à la place SingleFault.


4 Réponses :


0
votes

Vous pouvez utiliser la méthode d'extension de SIEMODEFAULT pour exprimer que la requête ne doit jamais renvoyer un résultat. XXX

Cependant, il ne vous dit pas si vous avez 0 résultats ou plus de 1.


0 commentaires

0
votes

Si vous souhaitez compter les enregistrements, comptez le résultat de la requête sans sombredefault. xxx

Vous pouvez toujours exécuter d'abord ou par défaut sur le MNGR pour obtenir le gestionnaire spécifique.


0 commentaires

0
votes

Vous utilisez un identifiant pour le condition, je pense que vous auriez dû déjà garanti que cette requête ne renvoie qu'un seul résultat.

Si votre problème n'a aucun résultat s'il vous plaît vérifier l'utilisation. de firstordfault () de Titre MSDN . xxx


0 commentaires

14
votes

Tout d'abord, ce n'est pas une requête valide. Lorsque vous utilisez la syntaxe de la requête ( de bla in bla ... ), vous devez avoir une clause sélectionner . Il devrait être plus semblable à: xxx

Pour répondre à votre question, appeler sReveRetFault () sur votre requête retourne le premier résultat de la requête ou de la valeur par défaut pour le Type (le plus probable null dans ce cas). Pour ce que vous allez, cela ne sera pas une utilisation adéquate car la requête peut contenir plus d'un résultat.

Si vous souhaitez vérifier que la requête ne renvoie qu'un seul résultat, vous devez utiliser La méthode SIMOREFAULT () à la place. Il retournera l'un ou l'autre article produit par la requête, la valeur par défaut null s'il était vide ou jetez une exception s'il y avait plus d'un élément.

si vous n'aviez pas ' t Je veux jeter une exception, il peut être plus facile de jeter les deux premiers résultats dans une liste et de vérifier que vous en avez un. xxx


3 commentaires

La façon dont je l'ai fait était de dire si (mngr! = Null) {.. Nous savons que nous avons eu au bail 1 record}


Il y a aussi un .single () qui vérifie que vous avez exactement un enregistrement


-1 pour suggérer que jeter les résultats dans une liste et que le comptage serait une solution adéquate. Ce faisant sur des ensembles de gros résultats ou où une grande table doit être traversée pour saisir toutes les données serait très mauvaise. Les optimisations de premier et single ne peuvent pas être reproduites avec votre suggestion.