2016-07-29 1 views
0

내 의도는 LINQ 쿼리를 사용하여 MVC 컨트롤러 용 JSON을 반환하는 것입니다. ,MVC의 배열 JSON 개체에 LINQ C#

[{ 
    {"MG":"A", "Count": 2 }, 
    {"MG":"B", "Count": 7 } 
}] 

을 그리고 아래와 같은 것을 시도 :

[{ 
    "A" : {"Count": 2 }, 
    "B" : {"Count": 7 }, 
}] 

또는

[{ 
    "A" : [{"Count": 2 }], 
    "B" : [{"Count": 7 }], 
}] 

그러나 지금까지 나는 단지 그것을 같이 할 수 있습니다 :

형식은 내가 달성하고자하는 오류가 발생합니다.

익명 형식 멤버 선언자가 잘못되었습니다. 익명 형 멤버는 으로 멤버 할당, 단순한 이름 또는 멤버 액세스로 선언해야합니다. 누군가가 방향을 수정하는 날 지점 수 있다면

public JsonResult groupByTable() 
{ 
    IQueryable<tblSAPMessage> v = sapMessages(); 
    var data = v.GroupBy(g => g.MaterialGroup) 
     .Select(g => new { g.Key.ToString() = new { 
        Count = g.Count() 
       }}); 
    return Json(data, JsonRequestBehavior.AllowGet); 
} 

은 감사합니다. 감사 !

답변

1

정확하게 이해한다면 동적 속성 이름이 필요합니다. Expando 오브젝트

이 행에서 뭔가를 시도해 볼 수 있습니다.

dynamic mytype = new ExpandoObject(); 
var data = v.GroupBy(g => g.MaterialGroup) 
     .Select(g => (IDictionary<string, object>) mytype.Add(g.Key.ToString(), 
     new {Count = g.Count()})); 

더 많은 영감을 Dynamic properties

+0

내 기분이 JSON 개체를 만들 수 json.net/newtonsoft를 사용할 수 있지만 어떻게 든 이러한 답변을 볼 수 있었다 , 나는 코드로 놀고, 여전히 그것을 만들 수 없다. 여전히 같은 오류가 있습니다. –

0

당신이, 당신의 아이디어를 가지고 같은

using Json.net 
var countObject = new JObject(); 
countObject.Add("count",2); 
var jsonObject = new JObject(); 
jsonObject.Add("a", countObject); 
+0

감사합니다 마이클, 예멘 아랍 공화국 방법은 루프가 필요합니다,하지만 난 linq를 사용하여 메서드를 찾습니다. –

+0

linq foreach를 사용해 보셨습니까? https : //msdn.microsoft.com/en-us/library/bwabdf9z (v = vs.110) .aspx –

+0

의견을 보내 주셔서 감사드립니다. –