从嵌套列表创建数组
Posted
技术标签:
【中文标题】从嵌套列表创建数组【英文标题】:Create array from nested lists 【发布时间】:2014-02-02 10:21:30 【问题描述】:有点难以解释,但这里有...(使用 .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();
所以列与用户相关。
希望这是有道理的。任何帮助将不胜感激。
【问题讨论】:
如果您需要 JSON 格式的数据输出(即您的用户列表及其关联的对象图),您可能需要考虑使用 JSON 序列化程序。看看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();
这会为PatList
中的每个User
生成一个带有Username, Address1, Age & all ColumnHeaders
的数组。
【讨论】:
谢谢 这有效,但是,它删除了许多空列,如果我在表中表示,id 仍然需要。通过使用 concat 而不是 union var aaData = PatList.Select(d => (new string[] d.Username, d.Address1, d.Age.ToString() .Concat(d.Columns. Select(c => c.ColumnHeader))).ToArray()).ToArray(); 是的,Union
删除重复/空标题。以上是关于从嵌套列表创建数组的主要内容,如果未能解决你的问题,请参考以下文章