2013-04-25 61 views
0

我需要填充許多視圖的下拉列表。同樣的下拉菜單將被用來編寫一個Html Helper方法來生成下拉菜單的內容。.Distinct()子句不工作c#MVC

public static List<SelectListItem> GetBatchNumbers(this HtmlHelper html) 
    { 
     List<SelectListItem> items = new List<SelectListItem>(); 
     ModelContainer ctn = new ModelContainer(); 

     var batchNumbers = ctn.SearchResults.OrderBy(x => x.BatchID).ToList(); 

     foreach (var batch in batchNumbers.Distinct()) 
     { 
      items.Add(new SelectListItem() 
      { 
       Text = batch.BatchID + "-" + batch.WebsiteName + "-" + batch.SourceName, 
       Value = batch.BatchID 
      }); 
     } 

     return items; 
    } 

所以在我的測試數據中,我已經執行了3批搜索結果。所以我想在下拉列表中看到3個批號。但是,我看到SearchResults表中每個條目都重複了一個批號,因此Distinct()子句似乎沒有以所需的方式工作。

我讀過鮮明的()是棘手的使用對象,沒有人知道我可以做到這一點的另一種方式?

+0

什麼是信息搜索結果?這是一堂課嗎?它是一個結構?它是如何加載的? – TGlatzer 2013-04-25 10:11:32

+0

什麼是batchID? – Filip 2013-04-25 10:12:11

+0

@ Grumbler85搜索結果是一個數據庫表。它有000個條目,但我只想要檢索單個批處理ID,其中應該只有3個。 – 109221793 2013-04-25 10:14:44

回答

7

有一些實現比如IEnumerable<obj>.DistinctBy(o => o.Prop)將通過一個特殊的屬性支持不同。

下也適用

list.GroupBy(l => l.Property).Select(group => group.First()) 
+0

這個伎倆。謝謝。一旦時間限制結束,我會將您的答案標記爲正確。 – 109221793 2013-04-25 10:18:23