2011-07-07 26 views
0

我有兩個相關的一對多實體生成JSON結果基於兩個相關的entites

種族和汽車(在比賽中含有大量的汽車)

我需要生成一個JSON結果將它傳遞給jQGrid,我認爲可以這樣做,而不需要創建新的類女巫將包含屬性。我以爲我可以這樣做:

var jsonData = new 
     { 
      total = totalPages, 
      page = page, 
      records = totalRecords, 

      rows = (from c in Races 
        select new 
        { 
         //c.Cars.Id.ToString(), - need iteration 
         cell = new string[] { 
           //c.Cars.Id.ToString(), - need iteration 
           c.Date.ToString(), 
           c.Type.ToString(), 
           c.Cars //But how i may loop all Cars colection here? 
           //c.Cars.Name - need iteration 
           //c.Cars.Speed - need iteration 
          } 
        }).ToArray() 
     }; 

但汽車屬性代表集合。我如何迭代集合初始值設定項內?或者我應該更好地創造女巫將包含我需要的所有屬性?

任何想法?

比方說汽車有性能名稱速度Id和種族有性能日期,類型

的數據將顯示這樣的:

Date  | Type | Id | Name  | Speed 
02/03/2011 | A | 1 | MegaName1 | 130 
02/03/2011 | A | 2 | MegaName2 | 112 
02/03/2011 | A | 3 | MegaName3 | 132 
03/05/2011 | B | 4 | MegaName2 | 112 
03/05/2011 | B | 5 | MegaName4 | 33 
+0

怎麼辦你想在網格中表示這些信息?每一行都會代表一場比賽,而這些列又如何呢? –

+0

@Darin Dimitrov問題更新,每一行代表比賽+車 – Joper

回答

0

嘗試以下操作:

var jsonData = new 
{ 
    total = totalPages, 
    page = page, 
    records = totalRecords, 

    rows = 
     (from race in races 
     from car in race.Cars 
     select new 
     { 
      cell = new string[] 
      { 
       race.Date.ToString(), 
       race.Type, 
       car.Id, 
       car.Name, 
       car.Speed.ToString() 
      } 
     }).ToArray() 
}; 
+0

謝謝,我會嘗試,還有一件事,如果我想改變一些屬性名稱在該選擇,我的意思是如果例如我有財產car.Name它將在json輸出數組中被稱爲Name,但如果我希望它被稱爲CarName或Car代替。有沒有可能做到這一點,而無需重命名屬性,也不需要創建任何新類? – Joper

+0

@Joper,在這裏你正在創建一個簡單的字符串列表。在javascript中創建jqGrid時定義了列的名稱。 –

+0

是的,我明白了,但無論如何... – Joper

相關問題