Quel est l'équivalent de la déclaration suivante dans LINQ:LINQ - Où existe pas
Select t1.appname, t1.julianDte, t1.cat
From table1 t1
Where NOT EXISTS
(Select *
from table t2
where t1.cat = t2.cat AND t2.julianDte < t1.julianDte)
Quel est l'équivalent de la déclaration suivante dans LINQ:LINQ - Où existe pas
Select t1.appname, t1.julianDte, t1.cat
From table1 t1
Where NOT EXISTS
(Select *
from table t2
where t1.cat = t2.cat AND t2.julianDte < t1.julianDte)
Essayez ce modèle Not Any
.
var query = db.table1
.Where(t1 => !db.table2
.Any(t2 => t2.cat == t1.cat && t2.julianDte < t1.julianDte)
);
version Query syntaxe de la réponse de @ David B (avec Tout inversé à tous!):
from t1 in db.Table1
where db.Table2.All(t2 => t1.cat != t2.cat || t2.julianDte >= t1.julianDte)
select new
{
t1.appname,
t1.julianDte,
t1.cat
};
comment cela se traduit-il en sql? Dans mon expérience, "OU" doit être évité. –
Par curiosité, que diriez-vous de "OU" le rendrait plus dangereux que "ET"? –
OU tend à interférer avec l'utilisation des index. Trouvez des gens qui vivent sur la 3ème rue ET qui sont plombiers ... Dans ce cas, un index des gens par la rue où ils vivent est très utile. Trouvez des gens qui vivent dans la 3e rue OU qui sont plombiers ... Dans ce cas, un index des gens par la rue où ils vivent est beaucoup moins utile. –
from t1 in Context.table1DbSet
let ok =
(from t2 in Context.table2DbSet
where t2.Idt1 = t1.Idt1 && t1.DateValid.HasValue
).Any()
where
t1.Active
&& !ok
Je veillerais de commenter cela avec un '// où ne pas EXISTS' et essayez de le formater '! db.table2.Any ...' de sorte que '!' soit sur la même ligne que 'Any'. Souvent, LINQ est assez auto-descriptif, mais c'est un cas, je pense qu'un commentaire serait grandement apprécié, mais les futurs développeurs venant à travers votre code. – AaronLS
@AaronLS c'est une question philosophique intéressante ... Comment les démonstrations de syntaxe devraient-elles être commentées? Je n'avais évidemment pas besoin de mettre ce commentaire en avant pour le demandeur, car il utilisait déjà le formulaire sql dans la question. –
Je ne critiquais pas votre réponse, je faisais une suggestion générale pour quiconque utilise ce code, et merci, c'était utile. – AaronLS