【问题标题】: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();

所以列与用户相关。

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

【问题讨论】:

标签: c# asp.net-mvc linq


【解决方案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 &amp; 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 删除重复/空标题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-29
  • 1970-01-01
  • 2021-08-14
  • 1970-01-01
相关资源
最近更新 更多