【问题标题】:How to split DataTable into multiple DataTables based on value in 1st Column in c#?如何根据 c# 中第一列中的值将 DataTable 拆分为多个 DataTable?
【发布时间】:2013-12-18 18:55:31
【问题描述】:

我有以下数据表:

我想将其拆分为包含 3 个表的列表,如下所示:

什么是最好和最快的方法?我脑子里只有循环,但我认为这不是最好的主意,因为我的源表包含超过 3k 行,我想获得大约 300 个子表......

【问题讨论】:

  • 或许你可以试试“LinqToSQL”,请阅读这篇文章:codeproject.com/Articles/26657/Simple-LINQ-to-SQL-in-C
  • 由于这些不是索引数据库表,您必须对每一行执行检查,尽管它不一定是循环。
  • 我对Linq不是很熟悉,可以给我一个代码吗?我一定会花一些时间阅读 Linq=)
  • 在你的源数据表中,Name1、Name2、Name3是否只是DataTable特定列中的值,类似于Text1、Text2、Text3?
  • 如果每行都填写了名称列,this answer 可能会有所帮助。

标签: c# sorting datatable split


【解决方案1】:

谢谢大家。我最终得到了我从你的 cmets=) 中结合的解决方案

// Fill Employee names in each row
string fullName = "";
for (int i = 0; i < dt.Rows.Count; i++)
{
    if (dt.Rows[i][0].ToString() != "")
    {
        fullName = dt.Rows[i][0].ToString();
    }
    else
    {
        dt.Rows[i][0] = fullName;
    }
}

// Split into tables by each employee
List<DataTable> employeesTables = dt.AsEnumerable()
                        .GroupBy(row => row.Field<string>("F1"))
                        .Select(g => g.CopyToDataTable())
                        .ToList();

【讨论】:

  • 通用列名怎么样
猜你喜欢
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-02
  • 2015-04-12
  • 2019-06-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多