2012-08-08 3 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

당신은 (결과가

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

선택의 존재를하게 될 줄

return Json(list); 

같은

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

같은 anonomus 유형을 생성 한 후 바로 사용할 수 있습니다 o => o.Year)는 x를 지정하지 못하게합니다. 이름. 선택 (o => o.Year)을 제거하면 x.Year를 지정할 수 있지만 뚜렷한 연도 값을 얻지 못합니다. –

+0

이것은 트릭을 만들었습니다 : var list = (from dbBudget.Estimates select new {value = o.Year, name = o.Year}). Distinct(); –

+0

@MattEllenburg 죄송합니다. 응답이 너무 빠르며 코드를 테스트하지 않았습니다. 나는'.Select()'가 LINQ 질의에 허용되었다고 생각했다. 나는 여기에도 새로운 것을 배웠다. – Qpirate