Ich habe bei various questions auf SO sah und other sites, und diese erscheint die korrekte Syntax, um ein JOIN
in LINQ auszuführen, ist es aber einfach nicht funktioniert:Gibt es bei diesem LINQ JOIN eine Art Syntaxfehler?
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());
ignorieren, denn jetzt, die Tatsache, dass ich eigentlich nicht wählen Sie alles von Interesse, aber ich hätte gerne Zugriff auf die st.NAME
Eigenschaft auf jeder Zeile TPM_TASK
. Die zwei Tabellen sind durch STAGEID
verbunden. Ich erhalte die Compiler-Fehler:
The name 'st' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
Im LINQ Ausdruck kommen, die beide st
und task
haben rote squigglies. Bitte sag mir, dass ich etwas Dummes mache.
Haben Sie versucht, die genauen Anweisungen in der Fehlermeldung zu folgen? ("Ziehe es in Betracht, die Ausdrücke auf beiden Seiten von 'equals' zu vertauschen") –
@JonSkeet - Das war eigentlich das * erste * was ich versuchte, aber mein Ausdruck war 'task.STAGEID == st.STAGEID'. Dies führt zu einem ähnlichen Compiler-Fehler (was darauf hindeutet, dass ich die Ausdrücke vertausche). Ich tat es und wechselte auch zu "equals", weil ich dachte, dass das einen Unterschied machen könnte. Ich habe nicht versucht "task.STAGEID ist gleich st.STAGEID" was die gültige Kombination ist! Seufzer. –
Wenn Sie 'task.STAGEID == st.STAGEID 'hatten, hätten Sie nicht dieselbe Fehlermeldung erhalten, da Ihr Join an diesem Punkt * vollständig * ungültig gewesen wäre. –