2015-07-21 79 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));