ListUser:a,b,c,d
ListAccount:a,c,e我想得到e怎么做?

解决方案 »

  1.   

    就是说有两个List 我要求其中一个List不在另一个List中不包含的部分!
      

  2.   

    不在-不包含? LINQ提供交集和减集的运算,应该可以满足你的要求,只是你表达的意思我没明白。
      

  3.   

    即:
    ListUser:a,b,c,d
    ListAccount:a,c,e
    这两个List是有关系的都是泛型,里面只能存放User对象。ListUser和ListAccount中有相同的部分a,c
    而我要得到ListUser中的b,d或者ListAccount中的e.
      

  4.   

    这是差集啊,楼主中学没好好学...Linq有Except方法...
      

  5.   

    Except()也试过,也不行!请代码明示!谢谢!
      

  6.   

    Intersect可以取交集,Except是取减集。我没明白你上面“或者”的意思,而且对User和Account两种不同语义上的集合进行集合操作,似乎也不是很恰当。
      

  7.   

    我说了两个List存贮的都是User对象,只是我用了两个名字来区分,
    算了,我另举个例子:
    ListUser1:a,b,c,d
    listUser2:a,c,e
    我想得到listUser2中的e。
    且Except()这个方法我试过,也不行。就是不知道哪里写错了。请简单代码明示,谢谢!
      

  8.   

    如果这就是你想要的,看看合适不:
    List<char> SetA = new List<char>() { 'a', 'b', 'c', 'd' };
    List<char> SetB = new List<char>() { 'a', 'c', 'e' };var result = SetA.Except(SetA.Intersect(SetB)).Union(SetB.Except(SetA.Intersect(SetB))).ToList();foreach (var item in result)
        Console.WriteLine(item);
    结果:
    b
    d
    e
      

  9.   

    就把这句sql语句写成Linq,请指教!select * from ListUser1 as a where a.userId not in (select * from ListUser2 as b where a.UserId == b.userId)
      

  10.   

      不是,我要求的是其中一个的一部分不是两个List 的剩余部分。即:b,d或者e;并不是b,d且e。
      

  11.   

    那就把这个拆成2个集合
    var result = SetA.Except(SetA.Intersect(SetB)).Union(SetB.Except(SetA.Intersect(SetB))).ToList();
    b、d
    var result1 = SetA.Except(SetA.Intersect(SetB));
    e
    var result = SetB.Except(SetA.Intersect(SetB));