什么运营商应该有LINQ查询表达式支持?
问题描述:
在51 Standard Query Operators(其中只有42个实际上是查询操作符)中,只有24个直接受Visual Basic 9支持,而C#3直接支持24个:Query Expression Syntax for Standard Query Operators。什么运营商应该有LINQ查询表达式支持?
在许多情况下,查询语法可以说比等效方法语法更具可读性,特别是在涉及透明标识符时。但是,如果必须将查询和方法调用结合起来,那么可读性会下降。
所以,这个问题:什么查询运算符,当前或假设,你想在查询表达式语法中支持你的选择语言支持?
答
我很想有一个use
关键字的行为就像它的同名在F#结合,处置分配给它的价值在适当的时候:
var lengths = from path in myFiles
use fs = File.OpenRead(path)
select new { path, fs.Length };
(我知道还有其他方法来获取文件长度,只用你的想象力)
一种解决方法这里描述:Using IDisposables with LINQ
答
我还没有尝试过,但你可以利用放过?
var lengths = from path in myFiles
let fs = File.OpenRead(path)
select new { path, fs.Length };
使用本质上是一个IDisposable感知版本的let。为了明白为什么它是必要的,考虑如何在每个FileStream上调用Dispose()来打开查询。 – dahlbyk 2009-10-02 13:24:46
是的,让一个IDisposable感知版本会很棒。目前我还没有意识到这一点,对于这种类型的操作来说这是非常棒的。 – 2009-10-02 15:19:46