两个string数组,把他们里面的数组进行比较;在去掉相同的string元素,得到剩下的string元素!!怎么弄? 请教请教各位高手!! 谢谢

解决方案 »

  1.   


    static void Main(string[] args)
    {
      string[] aa = new string[] { "abc", "kkk", "ttt", "mmm", "zzz", "bbb" };
      string[] bb = new string[] { "xyz", "abc", "ttt", "mmm", "jkl" };  foreach (string s in Fuck(aa,bb))
        Console.WriteLine(s);
      Console.ReadLine();
    }static IEnumerable<string> Fuck(string[] aa, string[] bb)
    {            
      foreach (var s in aa.Concat(bb))
      {
        if (aa.Contains(s) && bb.Contains(s))
        {
          continue; //如果aa,bb都包含就pass
        }
        else
        {
          yield return s;
        }  }
    }
      

  2.   

    当然Fuck也可以简化成:static IEnumerable<string> Fuck(string[] aa, string[] bb)
    {            
      foreach (var s in aa.Concat(bb))
      if (!(aa.Contains(s) && bb.Contains(s)))
        yield return s;            
    }
      

  3.   

    或者string[] aa = new string[] { "abc", "kkk", "ttt", "mmm", "zzz", "bbb" };
    string[] bb = new string[] { "xyz", "abc", "ttt", "mmm", "jkl" };var x = from s in aa.Concat(bb)
        where (!(aa.Contains(s) && bb.Contains(s)))
        select s;foreach (var s in x)
      Console.WriteLine(s);
      

  4.   

    我的做法是,把其中的一个数组保存到list里面,list有remove方法然后跟另外一个数组进行对比! 剩余的就是我需要的!!