2016-07-29 13 views
0

私の意図は、LINQクエリを使用してMVCコントローラ用のJSONを返すことです。MVCの配列JSONオブジェクトへのLINQ C#

フォーマットは私が達成したい:

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

または

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

をしかし、これまでのところ、私はこれだけのようにそれを行うことができます。

[{ 
    {"MG":"A", "Count": 2 }, 
    {"MG":"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.net/newtonsoftを使用することができます私は何とか私はあなたのアイデアを得たように感じるが、 、私はコードで遊んで、まだそれを作ることができません。まだ同じエラーがあります。 –

0

のためにこれらの答えを見て可能性がありますが、JSONオブジェクト

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

マイケル、yrメソッドはループが必要ですが、私はlinqを使用してメソッドを探します。 –

+0

linq foreachを使ってみましたか?https://msdn.microsoft.com/en-us/library/bwabdf9z(v = vs.110).aspx –

+0

ありがとうございました。考えてくれてありがとうございます。 –

関連する問題