解决方案 »

  1.   


                List<int> a = new List<int>() { 1, 2, 3, 6, 8, 7 };
                List<int> b = new List<int>() { 1, 2, 3, 4, 5, 6 };
                List<int> c = b.Except(a).ToList();
                foreach (int i in c)
                {
                    Console.WriteLine(i); //4  5  
                }
                Console.Read();
    这样?
      

  2.   

    如果是数据库的话left join下判断b是空的应该可以取出来吧
      

  3.   

    数据都是整数么,是的话能不能先把list1和List2的数据进行基数排序,然后就基于值和索引的查询。
      

  4.   

    list 2 中的内容放入 hashTable
    list 1 中的内容逐个插入 list 2,发生 exception 就扔掉
      

  5.   


    List<int> a = new List<int> { 1,2,3};
    List<int> b = new List<int> { 2,3,3};
    a= a.Except(b).ToList();求差集就可以了
      

  6.   


            private List<int> ExceptList(List<int> a, List<int> b)
            {
                return (a.Except(b).ToList());
            }
      

  7.   


            private List<int> ExceptList(List<int> a, List<int> b)
            {
                List<int> c = new List<int>();
                foreach (int i in a)
                {
                    if (!b.Contains(i))
                    {
                        c.Add(i);
                    }
                }
                return c;
            }
      

  8.   

    List<int> c = b.Except(a).ToList(); 轻松搞定
      

  9.   

    100W的List也够大的了。15楼的试试,我没有试过。
      

  10.   

    .net具有 SortedList<K,T> 或者 Dictionary<K,T>。其查找效率基于什么原理,我想你应该知道,前者自动会使用二分查找方法,后者自动会使用HashCode查找方法。关键是你的100W数据插入这样的数据结构,这也需要时间。所以最为可疑的是“你为什么要一次性把它们都读入内存呢?”。假设必须读入内存,那么你是否尽量复用这100w数据?
      

  11.   

    linq应该是普通方法的最优解了
    不过感觉 从数据格式的角度看看 有没有优化的余地呢?
      

  12.   

    这是我见过的最搞笑的回复
    这并不搞笑,因为他准确地知道利用list2的hash查找功能。虽然他滥用exception,但是应该看到他的长处。他的主意对于100w数据而言,远远超过“用linq啊”这种主意。
      

  13.   

    通常我们不接受随便滥用exception的做法,因为你无法区分出到底是程序有某些bug还是真的属于 !hashtable2.ContainsKey(x) 的结果。不要把bug当作逻辑控制,因为这会让将来诊断新问题时分不清真假。而且exception处理机制需要巨大的代价。应该使用if(....containskey) 判断来预先设计程序流程,保留你还能分辨“到底有没有bug”的能力。
      

  14.   

    通常我们不接受随便滥用exception的做法,因为你无法区分出到底是程序有某些bug还是真的属于 !hashtable2.ContainsKey(x) 的结果。不要把bug当作逻辑控制,因为这会让将来诊断新问题时分不清真假。而且exception处理机制需要巨大的代价。应该使用if(....containskey) 判断来预先设计程序流程,保留你还能分辨“到底有没有bug”的能力。
    受教了
      

  15.   

    通常我们不接受随便滥用exception的做法,因为你无法区分出到底是程序有某些bug还是真的属于 !hashtable2.ContainsKey(x) 的结果。不要把bug当作逻辑控制,因为这会让将来诊断新问题时分不清真假。而且exception处理机制需要巨大的代价。应该使用if(....containskey) 判断来预先设计程序流程,保留你还能分辨“到底有没有bug”的能力。
    受教了
    +1