2009-10-02 91 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