2013-10-31 71 views
0

我正在尋找數據庫中具有重複電話號碼的所有經銷商。然後我想把它們列在一份包含所有經銷商信息的報告中。我無法讓我的選擇語句填充經銷商記錄屬性。LINQ TO SQL由於羣組而有限的選擇語句

如經銷商名稱地址等第四。我認爲這是因爲這個團體受到限制。

var dealers = _db.Dealers 
      .Where(x => x.Active) 
      .GroupBy(x => x.Phone) 
      .Select(x => new { Dealer = x.Key, Phone = x.Count()}) 
      .Where(x => x.Phone > 1); 

編輯: 期望的輸出將是每個經銷商的列表。我希望具有相同電話號碼的經銷商彼此相鄰。我不希望任何基於電話號碼的重複記錄。

回答

0

就在組中添加的第一個項目到最後一個選擇:

var dealers = _db.Dealers 
       .Where(x => x.Active) 
       .GroupBy(x => x.Phone) 
       .Select(x => new { Dealer = x.Key, Phone = x.Count(), FirstItem = x.First()}) 
       .Where(x => x.Phone > 1); 

結果屆時將有一個FirstItem財產

或者,如果你想所有在一個平面列表中的項目,你可以將Where直接應用到分組中:

var dealers = _db.Dealers 
       .Where(x => x.Active) 
       .GroupBy(x => x.Phone) 
       .Where(g => g.Count() > 1); 
       .SelectMany(g => g) // flat list of Dealers 
+0

@D斯坦利我在使用'<%#Eval(「Dealer」)%>'等標記顯示我的數據。我該如何做到這一點,當我選擇我可以目標屬性的記錄? – jackncoke

+0

第二個例子應該給你一個'Dealer'對象的平面列表,所以你應該能夠直接訪問所有的屬性。 –

0

你不是在說什麼exp因此我不知道'有問題'是什麼意思。但我發現了一個可能令人困惑的事情:

您正在按電話分組(.GroupBy(x => x.Phone))。

所以,當你做new { Dealer = x.Key, ...x.Key將引用這個組的電話號碼。

+0

我更新了你所期望的輸出的問題,這有點令人困惑。 – jackncoke

+0

@jackncoke基於你的編輯好,D斯坦利答案中的第二個例子似乎是正確的。 –