为了账号安全,请及时绑定邮箱和手机立即绑定

Linq/SQL 返回不同的结果

Linq/SQL 返回不同的结果

C#
开满天机 2021-08-22 14:45:36
我很好奇为什么我的 linq group by query 返回 417 结果而我的 SQL 解释返回 419?我正在从我的列表中寻找重复的电子邮件。我检查了结果集,并且 linq 集中缺少的两个电子邮件地址都有重音。linq 不识别口音吗?有解决方法吗?电子邮件字段类型是 nvarchar(100)。如果您有任何问题,请告诉我,提前致谢!var listOfContacts = (from contacts in something                      where contacts.Team.Id.Equals(TeamGuid) && !contacts.Email.Equals(null)                      select new {contacts.Id, EmailAddress = contacts.Email.ToLower()}).ToList();//Full Contact List; exact amount matchesvar dupeEmailsList = listOfContacts    .GroupBy(x => x.EmailAddress)    .Where(g => g.Count() > 1)    .Select(y => y.Key)    .ToList();//Returns 417SELECT Email, COUNT(*)FROM somethingWHERE Team = 'Actual Team Guid Inserted Here'GROUP BY EmailHAVING (COUNT(LOWER(Email)) > 1 AND Email IS NOT NULL)ORDER BY Email//Returns 419
查看完整描述

3 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

这是一个已知问题,解决方法已经得到解答 ->这里这里

您必须明确告诉它忽略它们。


查看完整回答
反对 回复 2021-08-22
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

由于 .ToList() 在您的第一个 LINQ 表达式中,GROUP BY 正在 C# 中对 Email.ToLower() 的结果执行

这与您提供的 SQL 查询完全不同,其中 GROUP BY 在原始 EMAIL 列上执行,没有 ToLower()。查询返回不同的结果并不奇怪。


查看完整回答
反对 回复 2021-08-22
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信