Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 35720|Répondre: 2

[Source] La différence entre Expression<Func<T, bool>> et Func<T, bool> dans EF

[Copié le lien]
Publié sur 26/09/2021 09:21:21 | | | |
Func<TObject, bool> est un délégué

Expression<Func<TObject, bool>> sont des expressions

L’expression deviendra un délégué après compilation avant de pouvoir être exécutée. Comme quoi

Expression<Func<int, bool>> ex = x=>x < 100 ;

Func<int, bool> func = ex. Compile() ;

Alors vous pouvez appeler func :

func(5) //-retourne vrai

func(200) //- renvoie faux

Les expressions ne peuvent pas être appelées directement.

Cas:Un code de requête incorrect provoque une requête complète de la table de la base de données

Le code d’erreur est le suivant :

Passer une variable de type Func comme argument à la méthode Count,EF interroge toutes les données de toute la table et les filtre depuis la mémoire。 L’instruction SQL générée ressemble à ceci :

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Exécuté DbCommand (8ms) [Paramètres=[], CommandType='Text', CommandTimeout='30']
      SELECT [c]. [id], [c]. [client_type], [c]. [statut], [c]. [locataire]
      DE [tableau] COMME [c]
Le code correct est le suivant :

L’écriture correcte ajoute une condition où provenant de la base de données puis renvoie directement la valeur du compte。 L’instruction SQL générée ressemble à ceci :

info: Microsoft.EntityFrameworkCore.Database.Command[20101]
      Exécuté de DbCommand (4ms) [Paramètres=[], CommandType='Text', CommandTimeout='30']
      SELECT COUNT(*)
      DE [tableau] COMME [c]
      OÙ [c]. [client_type] = 1


EF Core Série 4 examine les instructions SQL générées
https://www.itsvse.com/thread-9564-1-1.html
ef affiche les instructions SQL générées
https://www.itsvse.com/thread-3813-1-1.html

En utilisant les appels de délégués Func sontSystem.Linq.EnumerableComptage ci-dessous

L’expression appelée avec Expression<Func<T, bool>> estSystem.Linq.QueryableComptage ci-dessous



(Fin)





Précédent:[Pratique] Créer une version verte sans installation de Java JDK Windows
Prochain:Java envoie des codes de vérification SMS via le SDK SMS d’Alibaba Cloud
Publié sur 26/09/2021 16:19:52 |
instruit
Publié sur 26/09/2021 17:31:25 |
Oui, je suis ici pour réapprendre...
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com