Ho guardato various questions su SO e other sites, e questo sembra essere la sintassi corretta per eseguire un JOIN
in LINQ, ma è solo non funziona:C'è qualche errore di sintassi con questo LINQ JOIN?
var stages = (from stage in entityManager.TPM_TASKSTAGE select stage);
var results = (from task in pv.TPM_TASK
join st in stages on st.STAGEID equals task.STAGEID
where task.TASKTYPE == "Solution"
select new SolutionTask());
Ignora, per ora, il fatto che in realtà non sono selezionare nulla di interesse, ma mi piacerebbe avere accesso alla proprietà st.NAME
su ogni riga di TPM_TASK
. Le due tabelle sono collegate da STAGEID
. Ottengo l'errore del compilatore:
The name 'st' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
Nell'espressione LINQ unirsi, sia st
e task
hanno squigglies rosse. Per favore dimmi che sto facendo qualcosa di stupido.
Hai provato a seguire le istruzioni esatte nel messaggio di errore? ("Considera di scambiare le espressioni su entrambi i lati di" equals "") –
@JonSkeet - In realtà era la * prima * cosa che ho provato, tuttavia la mia espressione era 'task.STAGEID == st.STAGEID'. Questo produce un errore simile nel compilatore (suggerendo di scambiare le espressioni). Così ho fatto, e anche passato a pensare "equals" che potrebbe fare la differenza. Non ho provato 'task.STAGEID equivale a st.STAGEID' che è la combinazione valida! Sospiro. –
Quando avevi 'task.STAGEID == st.STAGEID' non avresti avuto lo stesso messaggio di errore, perché il tuo join sarebbe stato * completamente * non valido a quel punto. –