改变在LINQ查询中返回的每个值与查询相同
问题描述:
我想知道是否可以在执行查询本身的同时对LINQ查询中返回的每个元素执行操作。改变在LINQ查询中返回的每个值与查询相同
例子:
var files = Directory.EnumerateFiles(@"C:\etc", "*.*", SearchOption.AllDirectories)
.Where(s => (s.ToLower().EndsWith(".psd"))
&&
new FileInfo(s).Length > 500000);
发现一套标准中的所有文件,但如果我想说微调“C:\”从返回的每个字符串,可我不知怎么说,S =后F(S) where子句或将这是每个循环的单独foreach。
谢谢。
答
的Where语句后,您可以添加此
.Select(s => s.Replace(@"C:\",""));
,将返回与C字符串:\剥离。
答
是的,你可以使用Select
方法来做到这一点:
var files = Directory.EnumerateFiles(/* ... */)
.Where(/* ... */)
.Select(s => s.StartsWith(@"C:\") ? s.Substring(3) : s);
答
您希望使用Select
条款做投影:
var files = Directory.EnumerateFiles(@"C:\etc", "*.*", SearchOption.AllDirectories)
.Where(s => s.ToLower().EndsWith(".psd") && new FileInfo(s).Length > 500000)
.Select(s => s.Substring(3));