【发布时间】:2016-03-30 12:34:31
【问题描述】:
我正在尝试将一个列表的每个值与另一个列表的每个值进行比较,然后删除任何匹配的值,并且当前拥有此代码。
foreach (item s in List1)
{
for (int i = 0; i < list2.count; i++)
{
if (list2.ElementAt(i)==s)
{
list2.Remove(list2.ElementAt(i));
continue;
}
}
}
必须有一种更快或至少一种强度较低的方法来执行这样的比较。需要一种更快的方法,因为这可用于比较每个超过 1000 个值的列表。任何帮助将不胜感激
【问题讨论】:
-
其实要求是把
list2中存在list1中的元素去掉吧? -
正如@un-lucky 指出的那样,有更好的方法来做你可能需要的事情......让你的代码更快(不是更好,因为.NET 中的现有方法这样做) - 使用字典来加快搜索速度。可能与stackoverflow.com/questions/5636438/… 重复。您可能想阅读Set operations 来改进问题。
-
您的问题和您的代码不匹配。您的问题是关于比较两个列表中的所有元素对。您的代码是关于从另一个列表中删除一个列表的所有元素。这些是完全不同的问题,而您将它们完全混为一谈。两者都有有效的解决方案,但它们是不同的解决方案,所以说出你真正想要的。
标签: c# asp.net list optimization