繁体   English   中英

每个循环需要更多时间才能完成

[英]For each loop takes more time to complete

我在清单上有一个foreach。 列表长度总是很大,例如200K左右。

当我遍历foreach中的列表时,foreach中的逻辑将处理另一个集合,该集合也将是列表中的大约一百万个项目。 对于每次迭代,将对集合进行过滤,并且需要更新属性并按原样返回集合。 但是,这样做将永远无法完成该过程。

foreach(var list in iterationlist)
{
  var filteredCollections = collection.where(a=>a.name==list.name);
   filteredCollections.foreach(x=>{x.city="xxxx";});
}

有什么方法可以使这种逻辑更快? 目前,此实施过程需要3个多小时,但尚未完成

您可以使用Lookup (类似于Dictionary<key, List<value>> ):

var lookup = collection.ToLookup(a => a.name);

foreach (var list in iterationlist)
    foreach (var x in lookup[list.name])
        x.city="xxxx";

另一种选择是对名称进行哈希处理:

var names = new HashSet<string>(iterationlist.Select(x => x.name));

foreach (var x in collection)
    if (names.Contains(x.name))
        x.city="xxxx";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM