2012-08-08 65 views
0

我正在使用以下控制器填充年份的下拉列表。我不想手動列出年份,而是想從數據庫中檢索列表。我創建了一個linq查詢並將年份返回到列表中,但我無法弄清楚如何將該列表放入要傳遞的列表中。linq jsonresult dropdownlist

public JsonResult PopulateYears() 
    { 
     var list = new object[] { }; 

     list = new object[] { 
      new { value = 2001, name = "2001" }, 
      new { value = 2002, name = "2002" }, 
      new { value = 2003, name = "2003" } 
     }; 

     var results = dbBudget.Estimates.Select(o => o.Year).Distinct().ToList(); 

     foreach (var result in results) 
     { 
      //How do I create entries for list here? 
     } 

     return Json(list); 
    } 

回答

1

您可以創建一個anonomus型像這樣

var list = (from x in dbBudget.Estimates.Select(o => o.Year).Distinct() 
select new {value=x.Year,name = x.Year}); 

,然後只需用線

return Json(list); 

結果將是

[{"name":"2011","value":"2011"},{"name":"2012","value":"2012"},{"name":"2010","value":"2010"}] 
+1

選擇的存在( o => o.Year)阻止我爲值a指定x.Year nd名字。如果我刪除選擇(o => o.Year),我可以指定x.Year,但我沒有得到不同的年份值。 – 2012-08-08 16:18:40

+0

這個技巧:var list =(from dbBudget.Estimates select new {value = o.Year,name = o.Year})。Distinct(); – 2012-08-08 16:19:58

+0

@MattEllenburg對不起,我的回覆太快,沒有測試我的代碼。我認爲'.Select()'在LINQ查詢中被允許。我也在這裏學到了一些新東西。 – Qpirate 2012-08-09 09:16:57