在查询的同时更改LINQ查询中返回的每个值
本文关键字:查询 返回 LINQ | 更新日期: 2023-09-27 18:25:44
我想知道是否可以在执行查询的同时对LINQ查询中返回的每个元素执行操作。
示例:
var files = Directory.EnumerateFiles(@"C:'etc", "*.*", SearchOption.AllDirectories)
.Where(s => (s.ToLower().EndsWith(".psd"))
&&
new FileInfo(s).Length > 500000);
在设置的条件内找到所有文件,但如果我想说从返回的每个字符串中修剪"C:''",我可以在where子句后面说s=f(s)吗?或者这是每个循环的一个单独foreach吗。
谢谢。
在Where语句之后,您可以添加此
.Select( s => s.Replace(@"C:'",""));
这将返回带有C:''stripped的字符串。
是的,可以使用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));