【发布时间】:2016-09-12 19:14:10
【问题描述】:
我有两个 ArrayList 数组。
public class ProductDetails
{
public string id;
public string description;
public float rate;
}
ArrayList products1 = new ArrayList();
ArrayList products2 = new ArrayList();
ArrayList duplicateProducts = new ArrayList();
现在我想要的是让所有产品(包含 ProductDetails 类的所有字段)在 products1 和 products2 中都有重复的描述。
我可以像传统方式一样运行两个 for/while 循环,但是如果我将在 两个数组中拥有超过 10k 个元素,这将非常慢。
所以也许可以用 LINQ 完成一些事情。
【问题讨论】:
-
使用
List<T>,而不是ArrayList。 -
你应该使用数据库。
-
我同意@SLaks,使用外部选择为
Select Distinct和Inner Select doing your Group By Having Count(*) >= 2的子查询会更容易 -
“教科书”的实现是对两个序列进行排序(
O(n lg n),如果需要比较排序),然后将这些序列放在一起。这是数据库使用的几种算法之一。 -
@user2864740:你的意思是
O(n lg n)。或者制作字典并在O(n)中进行操作。
标签: c# arrays linq arraylist duplicates