使用 LINQ 根据单独的给定扩展数组过滤文件
Use LINQ to filter files based on separate given extension array
我正在研究 .NET CORE 6 解决方案。我有文件列表以及每个扩展名和另一个扩展名列表,即 .csv。我想让 LINQ 根据列表 2 过滤列表 1 中的文件。即,如果列表 2 有 .csv 和 .txt,那么 LINQ 应该只过滤掉 .csv 和 .txt 文件。我确实实施了解决方案,但它正在使用循环
private List<string> FilterFilesWithAcceptedExtenison(List<string> files, List<string> acceptedExtensions)
{
List<string> FilteredFiles = new List<string>();
foreach(var file in files)
{
var extension = Path.GetExtension(file);
if (acceptedExtensions.Contains(extension))
{
FilteredFiles.Add(file);
}
}
return FilteredFiles;
}
您可以使用 .Where()
子句根据给定条件过滤 files
。喜欢,
Filters a sequence of values based on a predicate.
using System.Linq;
using System.Collections.Generic;
...
List<string> FilteredFiles = files
.Where(file => acceptedExtensions.Contains(Path.GetExtension(file))
.ToList();
简直了
var filteredFiles = files.Where(f => acceptedExtensions.Contains(Path.GetExtension(f)));
如果你真的需要它是List<string>
,你可以在最后加上ToList()
。
我正在研究 .NET CORE 6 解决方案。我有文件列表以及每个扩展名和另一个扩展名列表,即 .csv。我想让 LINQ 根据列表 2 过滤列表 1 中的文件。即,如果列表 2 有 .csv 和 .txt,那么 LINQ 应该只过滤掉 .csv 和 .txt 文件。我确实实施了解决方案,但它正在使用循环
private List<string> FilterFilesWithAcceptedExtenison(List<string> files, List<string> acceptedExtensions)
{
List<string> FilteredFiles = new List<string>();
foreach(var file in files)
{
var extension = Path.GetExtension(file);
if (acceptedExtensions.Contains(extension))
{
FilteredFiles.Add(file);
}
}
return FilteredFiles;
}
您可以使用 .Where()
子句根据给定条件过滤 files
。喜欢,
Filters a sequence of values based on a predicate.
using System.Linq;
using System.Collections.Generic;
...
List<string> FilteredFiles = files
.Where(file => acceptedExtensions.Contains(Path.GetExtension(file))
.ToList();
简直了
var filteredFiles = files.Where(f => acceptedExtensions.Contains(Path.GetExtension(f)));
如果你真的需要它是List<string>
,你可以在最后加上ToList()
。