我正在使用 Windows 窗体和 C#。我有一个包含超过 200,000 个项目的列表框。
我有一个很长的字符串,我想找到这 200,000 个项目中的哪一个出现在该字符串中。
我写了这段代码,但我想知道是否有更好的方法来编写它:
string Codes = "";
foreach (string itm in lbxCodes.Items)
{
if (Result.Contains(itm))
{
Codes = Codes + "," + itm;
}
}
return Codes;
改进字符串处理的两个版本:
StringBuilder codes = new();
foreach (string itm in lbxCodes.Items)
{
if (Result.Contains(itm))
{
codes.Append(",").Append(itm);
}
}
return codes.ToString();
注意,这并不能修复问题的原始代码中也存在的“前导逗号”错误。
List<string>
+ string.Join
List<string> codes = new();
foreach (string itm in lbxCodes.Items)
{
if (Result.Contains(itm))
{
codes.Add(itm);
}
}
return string.Join(",",codes);
但正如评论中已经提到的:首先将 200k 搜索项保留在 UI 组件中可能是一个低于标准的想法。所以,也许您想重新考虑整个方法。但这将是一个不同的问题。