如何使用Array.Find<;T>;()具有多个参数
本文关键字:参数 Array 何使用 Find lt gt | 更新日期: 2023-09-27 18:21:24
我的项目内置于.Net Framework 2.0中。因此,在我的情况下,我无法使用LINQ。
我正试图从Array1和Array2中得到结果,并加入左侧。两个数组都包含使用CCD_ 1方法返回的文件名。现在,我正在尝试使用Array.Find<T>()
函数在Array2中查找Array1的项。我正在学习这个msdn教程。
foreach (string file in Array1)
{
String found = Array.Find(Array2, MatchFileName);
if (found != String.Empty)
{ ''will do my stuff; }
}
private static bool MatchFileName(String s)
{
string _match = "100-006";
return ((s.Length > 5) && (s.Substring(0, 7).ToLower() == _match.ToLower()))
}
它运行良好。但是,问题是匹配部分("100-006"
)不是固定的——它可以根据foreach循环的项目而变化。但是,我不知道如何传递另一个参数来匹配Array2元素。
我想要这样的东西。
foreach (string file in Array1)
{
String found = Array.Find(Array2, MatchFileName(file));
if (found != String.Empty)
{ ''will do my stuff; }
}
private static bool MatchFileName(String s, string file)
{
string _match = file.Substring(0,7);
return ((s.Length > 5) && (s.Substring(0, 7).ToLower() == _match.ToLower()))
}
我该怎么做?
您可以编写一个类来包装参数:
public sealed class Finder
{
private readonly string _match;
public Finder(string match)
{
_match = match.ToLower();
}
public bool Match(string s)
{
return ((s.Length > 5) && (s.Substring(0, 7).ToLower() == _match));
}
}
然后你可以这样使用它:
var finder = new Finder("100-006");
string found = Array.Find(Array2, finder.Match);
请注意,这也允许您优化对_match.ToLower()
的重复调用。