2014-01-14 150 views
1

有點難以解釋,但在這裏不用...(使用.NET 4.5,C#)創建一個從嵌套列表陣列

我們目前擁有的項目列表(按照下面的「用戶」),其中包含一個列對象列表。即。

public class TableColumn 
{ 
    public string ColumnHeader { get; set; } 
    public string ColumnValue { get; set; } 
    public int ColumnWidth { get; set; } 
} 

public class User 
{ 
    public string Username { get; set; } 
    public string Address1 { get; set; } 
    public int Age { get; set; } 

    public List<TableColumn> Columns { get; set; } 
} 

我們正在使用JQGrid,我們需要傳回Json。

沒有我們將使用嵌套列表: -

var aaData = PatList.Select(d => new string[] { 
       d.Username , 
       d.Address1 , 
       d.Age}).ToArray(); 

return Json(new 
     { 
      sEcho = param.sEcho, 
      aaData = aaData, 
      iTotalRecords = Convert.ToInt32(totalRowsCount.Value), 
      iTotalDisplayRecords = Convert.ToInt32(filteredRowsCount.Value) 
     }, JsonRequestBehavior.AllowGet); 

偉大的工程。

我們正在努力的是如何添加列的列表。

var aaData = PatList.Select(d => new string[] { 
       d.Username , 
       d.Address1 , 
       d.Age, 
       d.Columns.forEach(????)}).ToArray(); 

所以這些列與用戶相關。

希望這是有道理的。任何援助將不勝感激。

+0

如果您需要以JSON格式輸出數據(即您的用戶列表及其關聯的對象圖),則可能需要考慮使用JSON序列化程序。看看[.NET 4有一個內置的JSON序列化/反序列化?](http://stackoverflow.com/questions/3275863/does-net-4-have-a-built-in-json-serializer -deserializer)。 –

回答

1

你可以做這樣的事情:

var aaData = PatList.Select(d => (new string[] { 
     d.Username, 
     d.Address1, 
     d.Age.ToString() 
    }.Union(d.Columns.Select(c => c.ColumnHeader))).ToArray() 
).ToArray(); 

這生成每個UserPatListUsername, Address1, Age & all ColumnHeaders的數組。

+0

謝謝你這工作,但是,它刪除了許多空的列,如果我代表一個表內,ID仍然需要。 (d =>(new string [] { d.Username, d.Address1, d.Age.ToString() } .Concat()函數使用concat而不是union var get d.Columns.Select(c => c.ColumnHeader)))。ToArray() ).ToArray(); – Simon

+0

是的,'聯合'刪除重複/空頭。 – Raidri