从嵌套列表创建数组

时间:2014-01-14 11:15:31

标签: c# asp.net-mvc linq

有点难以解释,但这里......(使用.net 4.5,C#)

我们目前有一个项目列表(如下所示" User"),其中包含列对象列表。即

 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();

因此列与用户相关。

希望这是有道理的。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以这样做:

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

这为User PatList数组Username, Address1, Age & all ColumnHeaders中的每个{{1}}生成。