2016-02-05 21 views
0

選擇查詢我的代碼看起來像這樣...連載字典,Json.net和實體

var records = from part in this.DataWorkspace.AUTOData.TestParameterViews 
    select new 
     {Name = part.ParamName, Val = part.CurrentValue}  

File.WriteAllText(@"c:\params.json", JsonConvert.SerializeObject(new{parameters = records }, Formatting.Indented)); 

生成的JSON文件看起來像這樣.....

{ 
"parameters": [ 
{ 
    "Name": "Var1", 
    "Val": 6666.0 
}, 
{ 
    "Name": "Var2", 
    "Val": 1.0 
}, 
{ 
    "Name": "Var3", 
    "Val": 5500.0 
}, 

等等......列出實體中的所有成員。

問題:我希望json輸出爲字典格式(如下所示),但仍然查詢實體。

"parameters": { 
    "Var1": 6666.0, 
    "Var2": 1.0, 
    "Var3": 5500.0, 

我試過下面的代碼,但掛在語法上。特別是智能感知表明在select一個錯誤說「無法隱式轉換類型....一個顯式轉換存在(是否缺少強制轉換?)

Dictionary<string, float> records = from part in this.DataWorkspace.AUTOData.TestParameterViews 
     select new Dictionary<string, float> 
     {Name = part.ParamName, Val = part.CurrentValue}  

File.WriteAllText(@"c:\params.json", JsonConvert.SerializeObject(new{parameters = records }, Formatting.Indented)); 

感謝您的幫助!

回答

0

創建字典然後環通TestParameterViews添加到字典中。然後序列化。

Dictionary<string, float> records = new Dictionary<string, float>(); 
this.DataWorkspace.AUTOData.TestParameterViews.ForEach(part => part.ParamName, part.CurrentValue); 
File.WriteAllText(@"c:\params.json", JsonConvert.SerializeObject(new { parameters = records }, Formatting.Indented)); 
+0

我仍然有與循環語法麻煩。intellinsense是在'.ForEach'你上面列出,我不拋出一個錯誤有一個ForEach聲明可供我使用在Intellisense自動完成中。這是我沒有參考的EF語法嗎? –

+0

對不起,這樣一個遲到的迴應。它在System.Collections.Generic中。命名空間作爲List <>的一個方法。您可以將TestParameterViews轉換爲列表 https://msdn.microsoft.com/en-us/library/bwabdf9z(v=vs.110).aspx – mosca125