Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将列名存储为datatable中的第一行?_C# - Fatal编程技术网

C# 如何将列名存储为datatable中的第一行?

C# 如何将列名存储为datatable中的第一行?,c#,C#,我想在DataTable中将列名存储为Datarow 尝试: Title| 11/09/2015 | 23/01/2015 ---- ------------- ---------------- A 1 12 B 1 13 试试这个 Title| 11/09/2015 | 23/01/2015 ---- ------------- ---------------- Title 11/09/2015

我想在
DataTable
中将列名存储为
Datarow

尝试:

Title| 11/09/2015 | 23/01/2015
----  -------------  ----------------
 A        1             12  
 B        1             13
试试这个

 Title| 11/09/2015 | 23/01/2015
----  -------------  ----------------
Title   11/09/2015   23/01/2015
 A        1             12  
 B        1             13

现在我明白了问题所在。第二列和第三列是双列。当然,您可以添加像
11/09/2015
这样的值。您想如何将其转换为双精度?您必须告诉我们如何转换它,或者使用
String
作为
DataColumn
-类型

一个选项是使用
DateTime.ToOADate()
这是ole自动化日期:

DataRow dr = table.NewRow();
foreach (DataColumn dc in table.Columns)
 {

  dr[dc] = dc.ColumnName;

 }
table.Rows.InsertAt(dr, 0);

这总是有效的。

尝试(var i=0;i11/09/2015这样的值。您想如何将其转换为双精度?你必须告诉我们你想如何转换它或使用
字符串作为数据列类型我也这么认为,但看看他的预期输出。我试过了,我想这会产生预期输出。谢谢你的回答。通常情况下,它应该可以工作,但在某些方面,我们在列数据类型中遇到了问题+1为正确答案。。。但是@tim用一种很好的未来主义的方式解释了这一点,这就是为什么他接受了他的答案。是的,他是一个天才,他的asnwer比我的要清楚得多。我希望它会起作用,我想念setField的属性…:)我会check@vinodh:
SetField
只是另一种赋值方法。您还可以使用firstRow[i]=新值。不同之处在于
SetField
还支持可为空的类型。感谢您的详细回答。。我现在可以调试了。。。最后一个问题输入字符串的格式不正确。无法存储在2015年1月2日列中。预期类型为双精度。它给出了这个错误,我可以调试。。。但是你可以很容易地找到我在这里发布的错误。@vinodh:用什么方法?因为预期类型是double,所以我认为您没有使用第三个。如何创建表和列?第二种和第三种方法
DataRow dr = table.NewRow();
foreach (DataColumn dc in table.Columns)
 {

  dr[dc] = dc.ColumnName;

 }
table.Rows.InsertAt(dr, 0);
DataRow firstRow = table.NewRow();
for (var i = 0; i < table.Columns.Count; i++)
{
    string colName = table.Columns[i].ColumnName;
    DateTime dt;
    double d;
    if(DateTime.TryParse(colName, out dt))
        firstRow.SetField(i, dt.ToOADate());
    else if(double.TryParse(colName, out d))
        firstRow.SetField(i, d);
}
table.Rows.InsertAt(firstRow, 0);
DataRow firstRow = table.NewRow();
for (var i = 0; i < table.Columns.Count; i++)
{
    DataColumn col = table.Columns[i];
    if (col.DataType == typeof(string))
    {
        firstRow.SetField(i, col.ColumnName);
    }
    else if (col.DataType == typeof(DateTime))
    {
        DateTime dt;
        if (DateTime.TryParse(col.ColumnName, out dt))
            firstRow.SetField(i, dt);
    }
    else if (col.DataType == typeof(double))
    {
        double d;
        if (double.TryParse(col.ColumnName, out d))
            firstRow.SetField(i, d);
    }
}
table.Rows.InsertAt(firstRow, 0);
DataTable table = new DataTable();
table.Columns.Add("Title");
table.Columns.Add("11/09/2015"); // string is default
table.Columns.Add("23/01/2015");
DataRow firstRow = table.NewRow();
for (var i = 0; i < table.Columns.Count; i++)
{
    string colName = table.Columns[i].ColumnName;
    firstRow.SetField(i, colName);
}
table.Rows.InsertAt(firstRow, 0);