ToList()给出错误“无法解决排序规则冲突”

时间:2013-02-20 20:18:33

标签: c# sql-server entity-framework exception-handling collation

这是我的查询

var maillst = (from o in ObjContext.CashDepositCapturings
               join m in ObjContext.Merchants on o.MerchantID equals m.MerchantID
               join u in ObjContext.Users on o.CreatedBy equals u.UserID
               where u.EmailAddress != String.Empty && u.EmailAddress != null && 
               o.CashDepositCapturingID.Equals(dataModel.CashDepositId)
               select new CashDepositApproveMail
               {
                  SendToEmailId = u.EmailAddress,
                  SendToFirstName = u.FirstName,
                  sendToLastName = u.LastName,
                  cashDepoCreatedBy = o.CreatedBy,
                  CashDepoCaptrId = o.CashDepositCapturingID
               }).ToList();

这给了我错误:

  

无法在等于操作的情况下解决“SQL_Latin1_General_CP1_CI_AS”和“Latin1_General_CI_AS”之间的排序规则冲突。

但当我删除.ToList()时,它可以正常工作

我有三个这样的查询我想在一个列表中添加所有三个的结果并将其发送到某个函数。

1 个答案:

答案 0 :(得分:3)

当它到达数据库时,您最终会尝试比较使用不同排序规则存储的两个变量。一种是使用SQL collat​​ion for Latin1 General Case Insensitive Accent Sensitive,另一种是Windows风格的整理。

在SQL中,您可以通过对相关列使用collate来解决此问题,以确保在相同的排序规则中对它们进行比较。在您的实体框架中,您必须找到一些其他方法来使排序规则相同。