在数据表中将值从一列移动到另一列

时间:2016-01-22 18:50:11

标签: c# vb.net datatable multiple-columns

我正在从不同的值动态生成数据表,例如列出并将其绑定到radgridview。

请考虑以下输入(以radgridview显示)

col1|col2
---------
A   |  D
A   |  D
B   |  D
B   |  E
C   |  E
D   |

上述输出是错误的,因为D在两列中,即col1和col2。

我想要以下格式输出。

col1|col2
---------
A   |  D
A   |  D
B   |  D
B   |  D
C   |  E
    |  E

参见gridview的上述输出,即现在D被移动到另一列以跟随序列。同样的方式我想在列之间移动值,无论单词是什么,但“以相同的字母开头”应该在同一列下。

任何人都可以帮我解决这个问题。任何C#或vb.net代码都可以提供帮助。

请注意,数据表可以有n号。动态生成的列和行。

2 个答案:

答案 0 :(得分:0)

某些伪代码(在C#中)可能是:

String sql = String.Empty;
String candidateDataValue = // assign it from wherever
if ((candidateDateValue.StartsWith('A') ||
    (candidateDateValue.StartsWith('B') ||
    (candidateDateValue.StartsWith('CA'))
{
    String sql = "INSERT INTO TABLE (col1) VALUES (:candidateDataValue");
}
else
{
    String sql = "INSERT INTO TABLE (col2) VALUES (:candidateDataValue");
}
// Now insert the record using "sql"

答案 1 :(得分:0)

您是否尝试在列中插入值并对其进行排序?

我认为你使用错误的数据结构来做到这一点。 DataTable应该用于"表"。

我认为您应该创建一个包含List<List<string>>对象的类。它会有你想要的行为。从一个&#34;列中删除&#34;,添加到另一个列并对整个列表进行排序。

List<List<string>> Table;

//Table Filled  with
col1|col2
---------
A   |  D
A   |  D
B   |  D
B   |  E
C   |  E
D   |

var str = Table[0][5];
Table[0].removeAt[5];
Table[1].add(str);
Table[1].Sort();

结果:

col1|col2
---------
A   |  D
A   |  D
B   |  D
B   |  D
C   |  E
    |  E

<强>更新

如果您需要DataTable对象来填充某种属性。您可以使用DataTable作为参数创建一个解析函数来创建List< List<string> >