我看various questions在SO和other sites,這似乎是執行在LINQ一個JOIN
正確的語法,但它只是不工作:這個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());
忽略,現在,事實我實際上並沒有選擇任何有趣的事情,但我想訪問TPM_TASK
的每行st.NAME
財產。這兩張表由STAGEID
連接。我得到的編譯器錯誤:
The name 'st' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.
在LINQ加入表達,既st
和task
有紅色squigglies。請告訴我,我正在做一些愚蠢的事情。
您是否嘗試遵循錯誤消息中的確切說明? (「考慮交換'等於'兩邊的表達式」) – 2013-04-08 21:41:35
@JonSkeet - 這實際上是我嘗試的第一件事,但是我的表達式是'task.STAGEID == st.STAGEID'。這產生了一個類似的編譯器錯誤(建議我交換表達式)。所以我做了,並且也轉向「平等」,認爲這可能會有所作爲。我沒有嘗試'task.STAGEID等於st.STAGEID'這是有效的組合!嘆。 – 2013-04-08 21:45:38
當你有'task.STAGEID == st.STAGEID'時,你不會得到相同的錯誤信息,因爲你的連接在那個時候*完全*無效。 – 2013-04-08 21:46:32