2012-08-23 70 views
2

分配的左側使用LINQ查詢我有這個簡單的LINQ查詢:在VB.net

Dim sourceSect = (From sect In allSections 
        Where sect.ORDER = sourceNode.Index 
        Select sect).Single() 

sourceSect.ORDER = targetNode.Index 

但是,如果我把它寫在行:

(From sect in allSections Where sect.ORDER = sourceNode.index Select sect).Single().ORDER = targetNode.Index 

我得到一個語法來自Visual Studio的錯誤。

有沒有合理的理由呢? :)

enter image description here

+1

告訴我們語法錯誤是什麼,我們可以給你一個更好的意見。請閱讀http://tinyurl.com/so-hints –

+0

@JonSkeet也許我添加的圖像更具說明性。如果我寫「語法錯誤」是「語法錯誤」。句號。 – Teejay

+0

而沒有更多的錯誤視圖? –

回答

2

你不能只寫

(From sect in allSections Where sect.ORDER = sourceNode.index Select sect).Single().ORDER = targetNode.Index 
在VB.Net

。當使用查詢語法,你必須先ASIGN結果給一個變量,然後才能設置屬性

Dim sect = (From sect in allSections Where sect.ORDER = sourceNode.index Select sect).Single() 
sect.ORDER = targetNode.Index 

所以,你有你的代碼sitck,或使用方法的語法(如添Schmelter指出):

allSections.Single(Function(sect) sect.ORDER = sourceNode.Index).Order = targetNode.Index 
+0

謝謝!直接回答,你不能! :) – Teejay

+0

你知道c#是否支持內聯語法? – Teejay

+1

@Teejay是的,看看[這個例子](http://pastebin.com/PpiNjzrJ) – sloth

3

作爲接受答案的旁註。有可能使用方法語法:

allSections.Single(Function(s) s.ORDER = sourceNode.Index).Order = targetNode.Index 
+0

好點。沒想到這一點。 +1 – sloth

+0

非常感謝! – Teejay