【问题标题】:How do I combine mulitple single columns Lists into a multi column single List?如何将多个单列列表组合成一个多列单列表?
【发布时间】:2017-11-22 22:15:11
【问题描述】:

我有以下课程:

    public class AuditBatch
{
    public List<string> Tables { get; set; }
    public List<long> TotalRecords { get; set; }
    public List<int> Index { get; set; }

然后由另一个类调用,并将值添加到这些列表中:

auditBatch.Tables.Add(extractQuery.Category);
auditBatch.TotalRecords.Add(rowsInFile + totalRowsInFile);
auditBatch.Index.Add(fileIndex);  

然后我希望能够将这些列表添加到一个列表中,该列表将这些列表中的每一个作为一列,因此它看起来像这样:

Tables | TotalRecords | FieldIndex
John      333             1
Paul      200             4
Ringo     890             1

以后我可能有兴趣按 FieldIndex 分组并获取最高的 TotalRecords 行。

我遵循了很多示例,但似乎找不到任何有效的方法。

【问题讨论】:

  • 删除属性上的List&lt;T&gt; 并将它们更改为各自的类型。然后你会有List&lt;AuditBatch&gt;
  • 我将如何填充列表?

标签: c# list linq


【解决方案1】:

您似乎将数据存储在三个并行列表中。项目之间的唯一链接是列表索引,可以使用 LINQ 访问,但这种解决方案比它需要的要笨拙得多。

12 秒是正确的:您应该重组您的类型,以便在单个记录中添加相关信息。像这样:

public class AuditRow
{
    public string Table { get; set; }
    public long TotalRecords { get; set; }
    public int Index { get; set; }
}

然后,创建一个行列表并一次填充一个:

        List<AuditRow> auditBatch = new List<AuditRow>();

        AuditRow row = new AuditRow();
        row.Table = "John";
        row.TotalRecords = 333;
        row.Index = 1;

        auditBatch.Add(row);

        //etc. for each row.

【讨论】:

  • 我如何真正循环创建所描述的表结构。这就是我真正苦苦挣扎的地方。
猜你喜欢
  • 2016-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
相关资源
最近更新 更多