首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拆分数据表

拆分数据表
EN

Stack Overflow用户
提问于 2012-02-01 22:10:22
回答 1查看 604关注 0票数 2

我有下面的数据表。

代码语言:javascript
复制
Name      classhours        Coursename
======================================
Tom            2              A
Jack           2              B
Joe            2              C
stella         3              D
Jose           3              E

我需要把表行合并成那些有相同的列,然后把它们加起来。

表B

代码语言:javascript
复制
Name                classhours       Coursename
===============================================
Tom,Jack,Joe            6              A,B,C
Stella,Jose             6               D,E

现在我需要进一步分割它..。在课程名称栏中,我最多可以有2门课程。所以我需要把表B分解成下面的表格

代码语言:javascript
复制
Name                classhours       Coursename
===============================================
Tom,Jack                4               A,B
Joe                     2                C
Stella,Jose             6               D,E

我们如何进一步拆分它以检查不超过2的CourseName计数?如果您需要进一步的解释,请告诉我。检查注意的代码,请帮助。

这是代码

代码语言:javascript
复制
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.
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2012-02-01 22:30:55

看来你只是需要一小笔零钱。

代码语言:javascript
复制
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;
        }
}

因为您只组合了两个类,所以您知道,在找到了dataTablei的匹配之后,您可以停止查找。

但是,只有当您可以假设每个课程名称都是唯一的(如您的示例中所示)时,这才有效。我将假设这可能是不正确的,如果是这样的话,您必须做更深入的检查。

代码语言:javascript
复制
// 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();  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9104109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档