如何修复" stackoverflowexception发生在mscorlib.dll"比较2 LINQ列表?

时间:2014-07-08 04:19:49

标签: c# linq dynamics-crm-2011

我有2个LINQ列表(定义为IQueryable)。它们仅包含来自2个不同系统的用户名。第一个列表来自我们的ActiveDirectory服务器(源是SQL Server数据库),第二个列表来自供应商应用程序(源是Microsoft CRM 2011中的内置联系人实体)。

第一个列表有大约36K记录,而第二个列表大约有43K。每条记录最多8字节/字符。

我尝试使用Except函数click here for MS page,当我尝试迭代结果时,收到此错误消息:

unhandled exception of type 'System.StackOverflowException' occured in mscorlib.dll

这是我正在运行的代码

        ADUserDataDAO _aduserDataDAO = new ADUserDataDAO();
        IQueryable<String> _adUserDatas = _aduserDataDAO.getADUserData();
        //int ctr = 0;
        //foreach (var record in _adUserDatas) { ++ctr; Console.WriteLine("username :\t{0}", _record); }
        //Console.WriteLine("total records: \t{0}", ctr);

        ContactsDAO _contactsDAO = new ContactsDAO();
        IQueryable<String> _contacts = _contactsDAO.GetContacts();
        //int ctr = 0;
        //foreach (var _record in _contacts) { ++ctr; Console.WriteLine("username :\t{0}", _record); }
        //Console.WriteLine("total records: \t{0}", ctr);

        IQueryable<String> _inADUserDatas = _adUserDatas.Except(_contacts);
        int ctr = 0;
        foreach (var _record in _inADUserDatas) { ++ctr; Console.WriteLine("username :\t{0}", _record); }
        Console.WriteLine("total records: \t{0}", ctr);

我可以使用上面的代码遍历每个列表(请参阅注释代码),所以我知道我从get函数中获取了一些内容。

任何想法都可能出错?非常感谢

1 个答案:

答案 0 :(得分:1)

ToList()界面上调用IQueryable,然后比较列表,而不是通过IQueryable界面进行比较