我想通过对每个元素应用谓词功能来更新列表。
这是我不使用LINQ的方式:
for(int i = 0; i < filesToCheck.Count; i++)
{
while (filesToCheck[i][0] == '/' || filesToCheck[i][0] == '\\')
filesToCheck[i] = filesToCheck[i].Substring(1);
}
如何使用LINQ做到这一点?
最佳答案
如果只需要从每个文件名的开头删除一些字符,则可以使用TrimStart
,然后:
var list = filesToCheck.Select(f => f.TrimStart('/', '\\'));
编辑:您当然可以在不使用LINQ的情况下执行此操作,但是这里的主要问题是您的
while
循环,而不是for
的使用:花了我几秒钟的时间来思考while循环以弄清楚它是什么做。这没有传达意图,我必须在头脑中执行它才能理解它。另外,您可以这样重写它:for (int i = 0; i < filesToCheck.Count; i++)
{
filesToCheck[i] = GetValueWithoutSlashes(filesToCheck[i]);
}
那么阅读此书的每个人都很清楚,并且还允许您将
GetValueWithoutSlashes
的实现更改为您想要的任何形式,例如private string GetValueWithoutSlashes(string value)
{
return value.TrimStart('/', '\\');
}