在两个数组中找到“不相同”的元素

时间:2010-06-01 17:07:53

标签: c# arrays list

我有两个整数列表(List<int>)。它们包含相同的元素,但列表1包含不在列表2中的元素。

如何查找列表1中哪些元素不在列表2中。

谢谢:)

PS。郎是c#

6 个答案:

答案 0 :(得分:18)

您可以使用IEnumerable.Except

list1.Except(list2);

答案 1 :(得分:3)

new HashSet<int>(l1).ExceptWith(l2);

答案 2 :(得分:1)

一个非常简单的解决方案:

HashSet<int> theSet1 = new HashSet<int>(List1);
theSet1.ExceptWith(List2);

答案 3 :(得分:0)

为简单起见,您可以使用Contains方法并检查一个不包含另一个元素的列表:

for (int i = 0; i < list2.Count; ++i)
{
    if (!list1.Contains(list2[i]) //current element is not in list 1
        //some code
}

答案 4 :(得分:0)

如果您的解决方案是第一个列表后添加的第一个和第一个列表中添加的onli记录, 也许这会很有用

public static int DokleSuIsti(IList<string> prevzemNow, IList<string> prevzemOld)
        {
            int dobroja = 0;
            int kolikohinaje;
            if (prevzemOld.Count() < prevzemNow.Count())
            {
                kolikohinaje = prevzemOld.Count();
            }
            else
            {
                kolikohinaje = prevzemNow.Count();
            }



            for (int i = 0; i < kolikohinaje; i++)
            {
                if (!Object.Equals(prevzemNow[i], prevzemOld[i]))
                {
                    dobroja = i;
                    return dobroja;
                }
                dobroja = i;
            }
            return dobroja;
        }

之后你可以使用那个int作为你的Ilist

步行的起点

答案 5 :(得分:-1)

如果他们没有排序或其他什么,你将会遇到困难。

O(N ^ 2)算法(一个简单的,愚蠢的循环)或其他数据结构,告诉我你更喜欢哪个。

或者,您当然可以通过排序来更改源数据,我认为这不是一种选择。