2009-10-02 88 views
0

在51 Standard Query Operators(其中只有42個實際上是查詢操作符)中,只有24個直接受Visual Basic 9支持,而C#3直接支持24個:Query Expression Syntax for Standard Query Operators什麼運營商應該有LINQ查詢表達式支持?

在許多情況下,查詢語法可以說比等效方法語法更具可讀性,特別是在涉及透明標識符時。但是,如果必須將查詢和方法調用結合起來,那麼可讀性會下降。

所以,這個問題:什麼查詢運算符,當前或假設,你想在查詢表達式語法中支持你的選擇語言支持?

回答

0

我很想有一個use關鍵字的行爲就像它的同名在F#結合,處置分配給它的價值在適當的時候:

var lengths = from path in myFiles 
       use fs = File.OpenRead(path) 
       select new { path, fs.Length }; 

(我知道還有其他方法來獲取文件長度,只用你的想象力)

一種解決方法這裏描述:Using IDisposables with LINQ

0

我還沒有嘗試過,但你可以利用放過?

var lengths = from path in myFiles 
       let fs = File.OpenRead(path) 
       select new { path, fs.Length }; 
+0

使用本質上是一個IDisposable感知版本的let。爲了明白爲什麼它是必要的,考慮如何在每個FileStream上調用Dispose()來打開查詢。 – dahlbyk 2009-10-02 13:24:46

+0

是的,讓一個IDisposable感知版本會很棒。目前我還沒有意識到這一點,對於這種類型的操作來說這是非常棒的。 – 2009-10-02 15:19:46