我很好奇为什么我的 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 回答
![?](http://img1.sycdn.imooc.com/545864490001b5bd02200220-100-100.jpg)
慕的地6264312
TA贡献1817条经验 获得超6个赞
由于 .ToList() 在您的第一个 LINQ 表达式中,GROUP BY 正在 C# 中对 Email.ToLower() 的结果执行
这与您提供的 SQL 查询完全不同,其中 GROUP BY 在原始 EMAIL 列上执行,没有 ToLower()。查询返回不同的结果并不奇怪。
- 3 回答
- 0 关注
- 159 浏览
添加回答
举报
0/150
提交
取消