我有一个HashSet<string>约5万名会员.我有另一个对象列表,我一个接一个地迭代,以确定对象的电子邮件是否存在.如果是,我需要对该对象执行一些操作.
var emailList = db.Emails.Select(s => s.EmailAddress.ToLower()).ToList();
var emailHash = new HashSet<string>(emailList);
var objects = db.Objects.ToList();
// everything is fine up to this point
foreach (var object in objects) {
if (!emailHash.Any(s => s.Equals(object.Email))) { // This takes ~0.3s
Console.WriteLine("Email: {0}", object.Email);
}
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做才能加快评估字符串列表中是否存在一个字符串?
您没有正确使用HashSet.使用Linq .Any()将实际根据存储在HashSet中的每个元素来评估您的条件.
要搜索HashSet中是否存在某个项目(使用常量时间O(1)),请使用emailHash.Contains(object.Email).
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |