Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 哪些操作符应该支持LINQ查询表达式?_C#_Vb.net_Linq - Fatal编程技术网

C# 哪些操作符应该支持LINQ查询表达式?

C# 哪些操作符应该支持LINQ查询表达式?,c#,vb.net,linq,C#,Vb.net,Linq,在51个查询运算符中,只有42个是真正的查询运算符,只有24个直接由Visual Basic 9支持,只有11个由C3支持 在许多情况下,查询语法可能比等效的方法语法更具可读性,特别是当涉及透明标识符时。但是,如果必须将查询和方法调用结合起来,那么可读性就会下降 因此,问题是:您希望在查询表达式语法中支持哪种查询运算符(当前的或假设的)?我希望有一个use关键字,其行为类似于F中的同名绑定,在适当时处理分配给它的值: var lengths = from path in myFiles

在51个查询运算符中,只有42个是真正的查询运算符,只有24个直接由Visual Basic 9支持,只有11个由C3支持

在许多情况下,查询语法可能比等效的方法语法更具可读性,特别是当涉及透明标识符时。但是,如果必须将查询和方法调用结合起来,那么可读性就会下降

因此,问题是:您希望在查询表达式语法中支持哪种查询运算符(当前的或假设的)?

我希望有一个use关键字,其行为类似于F中的同名绑定,在适当时处理分配给它的值:

var lengths = from path in myFiles
              use fs = File.OpenRead(path)
              select new { path, fs.Length };
我知道还有其他方法可以获得文件长度,只要利用你的想象力


这里介绍了一种解决方法:

我没有尝试过,但您能利用let吗

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

基本上使用的是一个支持IDisposable的let版本。要知道为什么它是必要的,请考虑如何在查询中打开的每个文件流上调用DelpSoad。我目前还没有意识到任何事情,这对这种手术来说是极好的。