2015-07-21 100 views
0

我正在处理此LINQ查询。我希望得到的列表根据EMailAddress1字段返回一个仅包含重复记录的列表,并由EMailAddress1字段分组。LINQ查询将独占返回重复

例如:

  1. [email protected]
  2. [email protected]
  3. [email protected]
  4. [email protected]
  5. [email protected]
  6. [email protected]
  7. [email protected]

对此有何建议?谢谢。

var contacts = (from c in xrm.ContactSet 
         where c.StateCode != 1 
         orderby c.EMailAddress1, c.CreatedOn 
         descending select new { 
          c.FirstName, 
          c.LastName, 
          c.EMailAddress1, 
          c.ContactId, 
          c.CreatedOn }).ToList(); 
+0

这是neccesary是一个查询?为什么不使用本机的“找到重复” – Sxntk

+0

@Sxntk嗯,我正在做这个列表的其他事情....我想我可以迭代列表中的每个元素,并相互比较,如下所示:foreach(var c在联系人){ 的foreach(在接触变种b) 如果(二== C){ //做一些事情 } }但对于分组?有没有办法将列表中的每个“EMailAddress1”字段分组? – user4946742

+0

您无法使用LinQ CRM进行分组,您可以查询账户中的所有记录,并使用正常的LinQ – Sxntk

回答

0

根据您以前的查询:

var duplicatedEmails = (from c in contacts 
         group c by c.EMailAddress1 into g 
         where g.Count() > 1 
         select g.Key).ToList(); 
var duplicatedContacts = contacts.Where(c => duplicatedEmails.Contains(c.EMailAddress1));