两个Arraylists的交叉点

时间:2017-09-05 07:24:03

标签: c#

我有2 ArrayList s,我想找到那些2的常见元素。

示例:

Arraylist 1包含:"Cat""Dog""Phone""Watch""Monkey".

Arraylist 2包含:"Dog""Phone""Chair".

因此,我希望有一个方法可以返回:"Dog""Phone"

之前我使用了Array,并且相交使用了Array,但我现在正在使用ArrayList

3 个答案:

答案 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