C# 如何在每个类别的末尾添加空数据行

C# 如何在每个类别的末尾添加空数据行,c#,datatable,C#,Datatable,我在C#应用程序中有DataTable 此DataTable有一个名为“Category”的列,有10个不同的值 以下是我的DataTable行的外观: 如何在每个类别组后添加空行,以下是我需要的示例: 有什么线索吗?以下是我提出的解决方案: var insertAtIndexes = dataTable.Rows.Cast<DataRow>() .GroupBy(row => row["Category"]) .Select(rowGroup =>

我在C#应用程序中有
DataTable

DataTable
有一个名为“Category”的列,有10个不同的值

以下是我的DataTable行的外观:

如何在每个类别组后添加空行,以下是我需要的示例:


有什么线索吗?

以下是我提出的解决方案:

var insertAtIndexes = dataTable.Rows.Cast<DataRow>()
    .GroupBy(row => row["Category"])
    .Select(rowGroup => rowGroup.Select(row => dataTable.Rows.IndexOf(row) + 1)
    .Max()).ToList();

for (var i = 0; i < insertAtIndexes.Count; i++)
{
    var emptyRow = dataTable.NewRow();
    dataTable.Rows.InsertAt(emptyRow, insertAtIndexes[i] + i);
}
//在每个WCG后面包含两个空行
var insertAtIndexes=ds.Tables[“截止日期的产能进度”].Rows.Cast()
//.GroupBy(row=>new{wcg=row.Field(“WcgName”),Date=Convert.ToDateTime(row.Field(“DueDate”).ToString())
.GroupBy(行=>行[“WcgName”])
.Select(rowGroup=>rowGroup.Select(row=>ds.Tables[“截止日期的产能进度”].Rows.IndexOf(row)+1)
.Max()).ToList();
对于(var i=0;i
请查看此项。。下面的任何答案是否有用?虽然此代码可以回答问题,但提供有关如何和/或为什么解决问题的附加上下文将提高答案的长期价值。
for (var i = 0; i < insertAtIndexes.Count; i++)
{
    var emptyRow = dataTable.NewRow();
    dataTable.Rows.InsertAt(SetDefaultValues(emptyRow), insertAtIndexes[i] + i);
}

static DataRow SetDefaultValues(DataRow row)
{
    row.SetField(1, 0);
    row.SetField(2, 0);
    row.SetField(3, 0);
    row.SetField(4, 0);
    return row;
}
for (int i = dataTable.Rows.Count - 1; i > 0; i--)
{
    if ((string)dataTable.Rows[i]["Category"] != (string)dataTable.Rows[i - 1]["Category"])
    {
        var row = dataTable.NewRow();
        row["Category"] = string.Empty;
        dataTable.Rows.InsertAt(row, i);
    }
}
//Include Two Empty Rows After Each WCG
var insertAtIndexes = ds.Tables["Capacity Progress to Due Date"].Rows.Cast<DataRow>()
//.GroupBy(row => new { wcg = row.Field<int>("WcgName"), Date = Convert.ToDateTime(row.Field<int>("DueDate").ToString()) })
.GroupBy(row => row["WcgName"])
.Select(rowGroup => rowGroup.Select(row => ds.Tables["Capacity Progress to Due Date"].Rows.IndexOf(row) + 1)
.Max()).ToList();

for (var i = 0; i < insertAtIndexes.Count; i++){
    var emptyRow = ds.Tables["Capacity Progress to Due Date"].NewRow();
    var secondemptyRow = ds.Tables["Capacity Progress to Due Date"].NewRow();
    ds.Tables["Capacity Progress to Due Date"].Rows.InsertAt(emptyRow, insertAtIndexes[i] + i + i);
    ds.Tables["Capacity Progress to Due Date"].Rows.InsertAt(secondemptyRow, insertAtIndexes[i] + i + i);
}