我有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函数中获取了一些内容。
任何想法都可能出错?非常感谢
答案 0 :(得分:1)
在ToList()
界面上调用IQueryable
,然后比较列表,而不是通过IQueryable
界面进行比较