L'ordre des conditions dans la clause where dans une requête LINQ est-il important

Mahesh

Je suis nouveau sur LINQ. Quelqu'un pourrait-il s'il vous plaît préciser si l'ordre des conditions dans la clause where dans une requête LINQ est important.

par exemple: Y a-t-il une différence de performance entre les deux requêtes ci-dessous

Requête-1

from prod in Products 
where prod.ExpiryDate == Products.Where(s => s.ID.Equals(CurrObj.Id) && 
      s.Type.Equals(CurrObj.Type)).Max(s => s.ExpiryDate) && 
      prod.ID.Equals(CurrObj.Id) && prod.Type.Equals(CurrObj.Type) 
select new
{
   AmountFrom = prod.AmountFrom,
   AmountTo = prod.AmountTo
}

Requête-2

from prod in Products 
where prod.ID.Equals(CurrObj.Id) && 
      prod.Type.Equals(CurrObj.Type) &&
      prod.ExpiryDate == Products.Where(s => s.ID.Equals(CurrObj.Id) && s.Type.Equals(CurrObj.Type)).Max(s => s.ExpiryDate)
select new
{
    AmountFrom = prod.AmountFrom,
    AmountTo = prod.AmountTo
}

Edit : Je viens de mesurer la performance. Query-1 prend environ 900 ms tandis que Query-2 prend 350 ms.

Tim Schmelter

Si c'est LINQ-To-Objects, c'est important.

Enumerable.Whereest comparable à une ifclause. Donc ça ...

if(expensiveMethodThatReturnsBool() && num1 < num2)
{
    // ...
}

... est probablement moins efficace que:

if(num1 < num2 && expensiveMethodThatReturnsBool())
{
    // ...
}

parce que &&c'est un opérateur de court-circuit. La deuxième expression est évaluée uniquement si la première est renvoyée true. Il en va de même pour ||, le second n'est évalué que si le premier est retourné false.

7.11 Opérateurs logiques conditionnels


Il en va de même avec l' Whereart enchaîné . Similaire car les prédicats sont appliqués à chaque élément restant qui est passé par le précédent Where.

Donc ça...

.Where(x => expensiveMethodThatReturnsBool(x))
.Where(x => x.num1 < x.num2)

peut également être moins efficace que:

.Where(x => x.num1 < x.num2)
.Where(x => expensiveMethodThatReturnsBool(x))

Le premier équivaut logiquement à:

.Where(x => expensiveMethodThatReturnsBool(x) && x.num1 < x.num2)

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

L'ordre des colonnes des index multi-colonnes dans la clause where de MySQL est-il important?

L'ordre des conditions est-il important avec plusieurs conditions dans une boucle while?

L'ordre des colonnes est-il important dans une instruction WHERE SQL

Pourquoi l'ordre des instructions LET est-il important dans cette requête Entity Framework?

L'ordre de comparaison est-il important dans une requête de jointure?

L'ordre des conditions de comparaison est-il important lors de l'utilisation d'opérateurs OR dans une fonction IF?

L'ordre des conditions dans une clause where est-il pertinent si les deux côtés restent des entités jointes?

L'ordre des clauses OrderBy, Select et Where dans Linq-to-entités est-il important?

SQLite optimise-t-il une requête avec plusieurs conditions AND dans la clause WHERE?

Comment ajouter des conditions élément/s dans la clause WHERE à une requête de composants (faiblement) connectés ?

L'ordre des accessoires dans JSX est-il important?

Empreinte digitale de requête Percona - pourquoi l'ordre est-il important dans certaines colonnes ?

Pourquoi l'ordre des déclarations dans une condition «ou» est-il important?

L'ordre des cas dans une instruction switch est-il important ?

L'ordre des membres dans une structure est-il important?

L'ordre des décorateurs est-il important dans une vue Flask?

La requête Linq avec une clause where dans une clause where provoque une erreur

L'ordre des états dans la déclaration if est-il important?

L'ordre des enregistrements dans la table est-il important ?

L'écriture de deux conditions dans la clause WHERE donne une sortie incorrecte dans la requête PDO

Sélectionnez la ligne si l'une des deux conditions (une dans la clause WHERE et une autre dans la clause HAVING) est remplie

l'ordre des conditions dans la jointure affecte-t-il les performances des requêtes?

L'ordre des colonnes de la clause MATCH () est-il important?

Dans Ant, l'ordre des tâches à l'intérieur d'une cible est-il important?

L'ordre des colonnes est-il important dans l'instruction INSERT OVERWRITE dans Hive?

L'ordre des fonctions LINQ est-il important?

L'ordre des mots-clés dans la définition des variables est-il important?

L'ordre des critères dans une clause WHERE peut-il affecter les performances dans MySQL?

ordre de OrderBy, Where, Select dans la requête Linq

TOP liste

chaudétiquette

Archive