大家好,想请教个问题,例如现在有一个数组:
 string[] strName = {"DS", "JZ", "LH", "HS", "DZ"};
和另外一个数组:string[] strName2={"DS","JZ","LH"};
现在问题是如何得出这两个数组比较后的差异结果,就是如上面的例子:得出strName和strName2比较的结果为:"HS","DZ",把相同的取掉,刚要不同的,不会做了,请大家帮忙,谢谢!

解决方案 »

  1.   

    var result=strName.Except(strName2).ToArray();
      

  2.   

    linq Intersect(相交)
    string[] strName = {"DS", "JZ", "LH", "HS", "DZ"};string[] strName2={"DS","JZ","LH"};var c=a.Intersect(b);
      

  3.   

    linq Intersect(相交)
    string[] strName = {"DS", "JZ", "LH", "HS", "DZ"};string[] strName2={"DS","JZ","LH"};var c=a.Intersect(b);
      

  4.   

    您好:我用的是.net2.0也没有这个函数。
      

  5.   

    bool Contains(List<string> list, string s)
    {
        foreach (string s1 in list) 
            if (s == s1) return true;
        return false;
    }List<string> Except(List<string> l1, List<string> l2)
    {
        List<string> list = new List<string>();
        foreach (string s in l1)
            if !(Contains(l2, s)) list.Add(s);
        return s;
    }
      

  6.   

    原来是数组,那修改下:bool Contains(string[] list, string s)
    {
        for (int i = 0; i < list.GetLength(0); i++)
            if (s == list[i]) return true;
        return false;
    }string[] Except(string[] l1, string[] l2)
    {
        List<string> list = new List<string>();
        for (int i = 0; i < l1.GetLength(0); i++)
            if (!Contains(l2, l1[i])) list.Add(l1[i]);
        string[] a = new string[list.Count];
        for (int i = 0; i < list.GetLength(0); i++)
            a[i] = list[i];
        return a;
    }
      

  7.   

    public string[] A(string[] values1, string[] values2)
    {
    List<string> results = new List<string>(values1);
    foreach (string value in values2)
    {
    if (results.Contains(value))
    results.Remove(value);
    else
    results.Add(value);
    }
    return results.ToArray();
    }