我有一个URL白名单,存储在HashSet<string>
中。我想要查找url
是否以白名单中的任何一项开头(必须是这样)。
编辑:之前的示例有点误导,并且存在打字错误 - 我已经有一个基本的URL,例如yahoo.com,白名单只是路径。
HashSet<string> whiteList = new HashSet<string>();
string path = "/sport/baseball/";
bool validUrl = false;
foreach (string item in whiteList)
{
if (path.StartsWith(item))
{
validUrl = true;
break;
}
}
有没有更优雅的方法使用LINQ(针对对象)进行查找?列表不是很大,因此性能不是问题。
HashSet<T>
在这里并没有帮助你;它只有在进行相等性测试时才有用。如果你不以其他方式使用HashSet<T>
,请将其替换为List<T>
- 这样构建速度会更快(假设你没有大量重复项)。 - Marc GravellHashSet
,这样就不会出现重复的链接。 - Noon Silk