在查询的同时更改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吗。

谢谢。

在查询的同时更改LINQ查询中返回的每个值

在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));