System.Data C# 上的表数据类型修复
System.Data tables data type fix on C#
我 运行 遇到了 system.data table 的问题,我想打印出每一列的每一行,但是我找不到一种方法来混合数据类型,例如我的 table.
中包含的数据类型
这里是相关的代码片段:
table.Rows[0].Field<int>(i)
字段 classifier 后需要一个日期类型,但如果它是 int 或 string,它会破坏我的代码,我需要一个既适用于 bool 的解决方案。
这是整个 class:
public DataTable MakeTable()
{
using (DataTable table = new DataTable())
{
table.Columns.Add("ID", typeof(int));
table.Columns.Add("First Name", typeof(string));
table.Columns.Add("Surname", typeof(string));
table.Columns.Add("Permanent?", typeof(bool));
table.Columns.Add("Salary", typeof(int));
table.Columns.Add("Bonus", typeof(int));
table.Columns.Add("Day Rate", typeof(int));
table.Columns.Add("Weeks Worked", typeof(int));
table.Rows.Add(1, "Joe", "Bloggs", true, 40000, 5000, null, null);
table.Rows.Add(2, "John", "Smith", true, 45000, 2500, null, null);
table.Rows.Add(3, "Clare", "Jones", false, null, null, 350, 40);
int x = 0;
for (int i = 0; i < 8; i++)
{
Console.WriteLine(table.Columns[i].ColumnName + ": " + table.Rows[0].Field<int>(i));
Console.WriteLine();
if (i == 4)
{
x++;
if (x == 3)
{
Console.WriteLine("BREAK");
break;
}
i = -1;
}
Console.WriteLine("\n");
}
return table;
}
}
有什么建议吗?
非常感谢,整天都被困在这个问题上,但无济于事。
@亚历山大
您可以打印如下数据:
- table.Rows[i][j] //代表第i行第j列
- table.Rows[i]["j"] //表示第i行列名为j的数据
修改版本:
for (int i = 0, x = 0 ;x< 3; i++) {
if (i == 8) {
x++;
Console.WriteLine("\n");
i = -1;
continue;
}
Console.WriteLine(table.Columns[i].ColumnName + ": " + table.Rows[x][i]);
}
输出结果:
我的演示:
foreach (DataRow dr in table.Rows) {
Console.Write("ID:{0,-3} First Name:{1,-5} Surname:{2,-8} Permanent?:{3,-6} Salary:{4,-5} Bonus:{5,-5} Day Rate:{6,-5} Weeks Worked:{7,-5}"//输出格式
, dr["ID"], dr["First Name"], dr["Surname"], dr["Permanent?"], dr["Salary"], dr["Bonus"], dr["Day Rate"], dr["Weeks Worked"]);
Console.WriteLine();
}
输出结果:
我 运行 遇到了 system.data table 的问题,我想打印出每一列的每一行,但是我找不到一种方法来混合数据类型,例如我的 table.
中包含的数据类型这里是相关的代码片段:
table.Rows[0].Field<int>(i)
字段 classifier 后需要一个日期类型,但如果它是 int 或 string,它会破坏我的代码,我需要一个既适用于 bool 的解决方案。 这是整个 class:
public DataTable MakeTable()
{
using (DataTable table = new DataTable())
{
table.Columns.Add("ID", typeof(int));
table.Columns.Add("First Name", typeof(string));
table.Columns.Add("Surname", typeof(string));
table.Columns.Add("Permanent?", typeof(bool));
table.Columns.Add("Salary", typeof(int));
table.Columns.Add("Bonus", typeof(int));
table.Columns.Add("Day Rate", typeof(int));
table.Columns.Add("Weeks Worked", typeof(int));
table.Rows.Add(1, "Joe", "Bloggs", true, 40000, 5000, null, null);
table.Rows.Add(2, "John", "Smith", true, 45000, 2500, null, null);
table.Rows.Add(3, "Clare", "Jones", false, null, null, 350, 40);
int x = 0;
for (int i = 0; i < 8; i++)
{
Console.WriteLine(table.Columns[i].ColumnName + ": " + table.Rows[0].Field<int>(i));
Console.WriteLine();
if (i == 4)
{
x++;
if (x == 3)
{
Console.WriteLine("BREAK");
break;
}
i = -1;
}
Console.WriteLine("\n");
}
return table;
}
}
有什么建议吗?
非常感谢,整天都被困在这个问题上,但无济于事。
@亚历山大
您可以打印如下数据:
- table.Rows[i][j] //代表第i行第j列
- table.Rows[i]["j"] //表示第i行列名为j的数据
修改版本:
for (int i = 0, x = 0 ;x< 3; i++) {
if (i == 8) {
x++;
Console.WriteLine("\n");
i = -1;
continue;
}
Console.WriteLine(table.Columns[i].ColumnName + ": " + table.Rows[x][i]);
}
输出结果:
我的演示:
foreach (DataRow dr in table.Rows) {
Console.Write("ID:{0,-3} First Name:{1,-5} Surname:{2,-8} Permanent?:{3,-6} Salary:{4,-5} Bonus:{5,-5} Day Rate:{6,-5} Weeks Worked:{7,-5}"//输出格式
, dr["ID"], dr["First Name"], dr["Surname"], dr["Permanent?"], dr["Salary"], dr["Bonus"], dr["Day Rate"], dr["Weeks Worked"]);
Console.WriteLine();
}
输出结果: