Qual è l'equivalente di seguente dichiarazione in LINQ:LINQ - Dove non esiste
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)
Qual è l'equivalente di seguente dichiarazione in LINQ:LINQ - Dove non esiste
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)
Prova questo schema Not Any
.
var query = db.table1
.Where(t1 => !db.table2
.Any(t2 => t2.cat == t1.cat && t2.julianDte < t1.julianDte)
);
Query versione della sintassi della risposta di @ David B (con qualsiasi invertita a tutti!):
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
};
quanto si traduce in sql? Nella mia esperienza, "OR" deve essere evitato. –
Per curiosità, che dire di "OR" lo renderebbe più pericoloso di "AND"? –
OPPURE tende a interferire con l'uso di indici. Trova persone che vivono sulla 3rd street E sono idraulici ... In questo caso, un indice di persone per la strada in cui vivono è molto utile. Trova persone che vivono in 3rd street o sono idraulici ... In questo caso, un indice di persone per la strada in cui vivono è molto meno 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
vorrei fare in modo di commentare questo con un '// dove NON EXISTS' e prova a formattarlo '! db.table2.Any ...' in modo che '!' sia sulla stessa riga di 'Any'. Spesso LINQ è piuttosto auto-descrittivo, ma in questo caso penso che un commento sarebbe molto apprezzato ma gli sviluppatori futuri si imbatteranno nel tuo codice. – AaronLS
@AaronLS è un'interessante domanda filosofica ... Quanto dovrebbero essere ben commentate le dimostrazioni di sintassi? Ovviamente non avevo bisogno di inserire quel commento per il beneficio del richiedente, dato che usava già il modulo sql nella domanda. –
Non stavo criticando la tua risposta, stavo facendo un suggerimento generale per chiunque usi questo codice, e grazie è stato utile. – AaronLS