在51 Standard Query Operators中(其中只有42个实际上是查询运算符),Visual Basic 9只支持24个,C#3只支持11个:Query Expression Syntax for Standard Query Operators。
在许多情况下,查询语法可以说比等效方法语法更具可读性,尤其是涉及透明标识符时。但是,如果必须组合查询和方法调用,则可读性会失效。
所以问题:您希望在查询表达式语法中使用您选择的语言支持哪些查询运算符(当前或假设)?
答案 0 :(得分:0)
我希望有一个use
关键字,其行为类似于F#中的同名绑定,在适当的时候处理分配给它的值:
var lengths = from path in myFiles
use fs = File.OpenRead(path)
select new { path, fs.Length };
(我知道还有其他方法可以获得文件长度,只需运用你的想象力。)
此处介绍了一种解决方法:Using IDisposables with LINQ
答案 1 :(得分:0)
我没有尝试过,但你可以使用let吗?
var lengths = from path in myFiles
let fs = File.OpenRead(path)
select new { path, fs.Length };