![](/img/trans.png)
[英]script task in SSIS under for loop each container takes lot of time to complete
[英]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.