我有2 ArrayList
s,我想找到那些2的常见元素。
示例:
Arraylist 1
包含:"Cat"
,"Dog"
,"Phone"
,"Watch"
,"Monkey".
Arraylist 2
包含:"Dog"
,"Phone"
,"Chair".
因此,我希望有一个方法可以返回:"Dog"
和"Phone"
。
之前我使用了Array
,并且相交使用了Array
,但我现在正在使用ArrayList
。
答案 0 :(得分:1)
试试这个,
ArrayList list1 = new ArrayList{ "cat", "dog" ,"phone", "watch"};
ArrayList list2 = new ArrayList{ "pen", "cat", "dog", "lamp" };
var elements = Enumerable.Intersect(list1.ToArray(), list2.ToArray()).ToArray();
ArrayList result = new ArrayList(elements);
希望有所帮助,
答案 1 :(得分:0)
你可以试试这个:
ArrayList first = new ArrayList();
first.Add("Cat");
first.Add("Dog");
ArrayList second = new ArrayList();
second.Add("Dog");
second.Add("Phone");
ArrayList final = new ArrayList();
foreach (var i in first.Cast<string>().Intersect(second.Cast<string>()))
final.Add(i);
生成的ArrayList为Dog
答案 2 :(得分:0)
我会为Intersect
实现一个扩展方法,因此您可以像使用任何其他可迭代集合一样使用它:
public static class ArrayListExtensions
{
public static ArrayList Intersect(this ArrayList source, ArrayList other)
=> new ArrayList(source.ToArray().Intersect(other.ToArray()).ToArray());
}
用法:
var first = new ArrayList(new[] { "Cat", "Dog", "Phone", "Watch", "Monkey" });
var second = new ArrayList(new[] { "Dog", "Phone", "Chair" });
var intersection = first.Intersect(second); // intersection is now an ArrayList