gpt4 book ai didi

c# - 拆分数据表

转载 作者:太空宇宙 更新时间:2023-11-03 16:35:58 25 4
gpt4 key购买 nike

我有下表数据表。

Name      classhours        Coursename
======================================
Tom 2 A
Jack 2 B
Joe 2 C
stella 3 D
Jose 3 E

我需要将表行合并到具有相同课时的行中,并对课时求和。

表B

Name                classhours       Coursename
===============================================
Tom,Jack,Joe 6 A,B,C
Stella,Jose 6 D,E

现在我需要进一步拆分它..在类(class)名称列中我最多可以有 2 门类(class)..所以我需要将表 B 分成下表

Name                classhours       Coursename
===============================================
Tom,Jack 4 A,B
Joe 2 C
Stella,Jose 6 D,E

我们如何进一步拆分它以检查 CourseName 的数量不超过 2?如果您需要进一步解释,请告诉我。检查附件中的代码请帮忙。

这是代码

for (int i = 0; i < dataTable.Rows.Count; i++)
{
for (int j = i + 1; j < dataTable.Rows.Count; j++)
{
if(datatable.Rows[i]["classhours"].ToString() == datatable.Rows[j]["classhours"].ToString())
{
//Adding the second row and third row to the first row and deleting the second and third row.
}
}
}

最佳答案

嗯,看来你只需要一点零钱。

for (int i = 0; i < dt.Rows.Count; i++)
{
bool notCombined = true;
int target = dt.Rows[i]["hours"];
for (int j = i + 1; j < dt.Rows.Count && notCombined; j++)
{
if(target == dt.Rows[j]["hours"].ToString())
{
dt.Rows[i]["name"] += "," + dt.Rows[j]["Name"];
dt.Rows[i]["hours"] += target;
dt.Rows[i]["course"] += "," + dt.Rows[j]["course];
dt.Rows[j].Delete();
notCombined = false;
}
}

由于您只是组合两个类,您知道在找到 dataTable[i] 的匹配项后,您可以停止查找。

但是,这仅在您可以假设每个类(class)名称都是唯一的(如您的示例中)时才有效。我将假设这可能是不正确的,如果是这种情况,您必须进行更深入的检查.

// Assuming classhours matches for dataTable.Rows[i] and dataTable.Rows[j]

if( dt.Rows[i]["course"].indexOf( dt.Rows[j]["course"] ) != -1 )
{ // dt already has the same course
dt.Rows[i]["Name"] += "," + dt.Rows[j]["Name"];
dt.Rows[i]["hours"] += target;
dt.Rows[j].Delete();
}
else if( dt.Rows[i]["course"].indexOf(',') == -1 )
{// dt[i] either contains just one course
dt.Rows[i]["name"] += "," + dt.Rows[j]["Name"];
dt.Rows[i]["course"] += "," + dt.Rows[j]["course];
dt.Rows[i]["hours"] += target;
dt.Rows[j].Delete();
}

关于c# - 拆分数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9104109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com