let 语句
LINQ中的Query语句可以包含let语句以便于我们来方便的组织我们的Query语句。
以上一篇中的选择文件为例,假设我们不希望仅仅来选择文件名称,而是希望选择FileInfo.那么我们可以将代码写成如下形式
var bigFiles = from file in GetAllFilesInDirectory(@"d:\")
where new FileInfo(file).Length > 100000000
select new FileInfo(file);
很明显,我们构建了两个FileInfo对象,
有了let, 我们就可以写如下代码
var bigFiles = from file in GetAllFilesInDirectory(@"d:\")
let info = new Fileinfo(file)
where info.Length > 100000000
select info;
C# 的编译器是通过如下两步来实现let语句的
var temp = from file in GetAllFilesInDirectory(@"d:\")
select new CompilerGeneratedType(file, new FileInfo(file));