![](/img/trans.png)
[英]What's the best way to acquire a list of strings that match a string inside a string, by looking through a string list?
[英]What's the best way to fiil list <string>?
我有一个方法,它的输入是一个文件地址列表,我想打开这些文件并处理它。 此地址包含文件扩展名。 我确定我有 3 个文件扩展名(txt、xlsx、xls)
在代码 pathWithFilesName 中,它输入带有文件路径的列表;
然后我想将它们发送到将打开并处理它们的方法
pathWithFilesName.Add("ds.xlsx");
pathWithFilesName.Add("ds.txt");
var listExcel=new List<string>();
var listTxt= new List<string>();
var validExcelFileTypes = new List<string>{ ".xls", ".xlsx" };
foreach (var path in pathWithFilesName)
{
foreach (var valid in validExcelFileTypes)
{
if (path.EndsWith(valid))
{
listExcel.Add(path);
}
else
{
listTxt.Add(path);
}
}
}
这个变体根本不是最优的,但可以工作)我知道如何在链接上获取 excel 文件
var list= (from path in pathWithFilesName from valid in validExcelFileTypes where path.EndsWith(valid) select path).ToList();
但是通过这种方法,我需要比较 2 个列表。 例如某种相交
制作样品的最佳方法是什么?
这是使用 LinQ 和 lambda 的变体。 它不应该更有效率,而不是更好或更坏。 它可能更具可读性。
listExcel
可以这样找到:
var listExcel = pathWithFilesName.Where(path=>validExcelFileTypes.Any(ext=> path.EndsWith(ext)));
如果您需要两个列表在一个 go 中。 您可以在相同条件下对源进行分组:
var listGrp = pathWithFilesName.GroupBy(path=>validExcelFileTypes.Any(ext=> path.EndsWith(ext)));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.