【发布时间】:2018-11-28 17:08:57
【问题描述】:
我很好奇为什么我的 linq group by 查询返回 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 matches
var dupeEmailsList = listOfContacts
.GroupBy(x => x.EmailAddress)
.Where(g => g.Count() > 1)
.Select(y => y.Key)
.ToList();
//Returns 417
SELECT Email, COUNT(*)
FROM something
WHERE Team = 'Actual Team Guid Inserted Here'
GROUP BY Email
HAVING (COUNT(LOWER(Email)) > 1 AND Email IS NOT NULL)
ORDER BY Email
//Returns 419
【问题讨论】:
-
身份证号可能有误。您的 linq 正在查看 ID 号,而 SQL 正在查看“TeamGuid”名称。
-
@stuartd, Latin1_General_CI_AI
-
@jdweng,我添加了 Team Guid 作为占位符,让我编辑以显示假 guid
-
LINQ 使用 SQL 处理查询 - 您可以删除
ToList并执行ToString以查看 SQL,或使用 LINQPad,或调试 SQL 引擎。您的 SQL 是否有可能返回两行NULL电子邮件地址?