如何将数组保存到DataTable?

时间:2016-06-20 08:20:26

标签: c# arrays

我有一个阵列。

我将此数组保存到DataTable

我的代码如下:

string[] myResult;
DataTable dt = new DataTable();
dt.Columns.Add("myCategory");
for (int i = 0; i < myResult.Length; i++)
{
    DataRow row = dt.NewRow();
    row[0] = myResult[i];
    dt.Rows.Add(row);
}

我的数据表如:

    myCategory:
-+-+-+-+-+-+-+-+-+-
    Student
    Micheal
    7.5
    9.5
    6.5

但我希望这样保存:

Category          Name            Score 1           Score 2           Score 3
Student           Micheal         7.5               9.5               6.5

如何添加这样的列。

3 个答案:

答案 0 :(得分:1)

您始终使用row[0]将值分配给第一列。也许你想用一个DataRow

创建一个表
string[] myResult;  // initialize ....

DataTable dt = new DataTable();
foreach(string s in myResult)
    dt.Columns.Add(); // or a named column, but you haven't provided any informations

DataRow row = dt.Rows.Add(); // already added
for (int i = 0; i < myResult.Length; i++)
    row.SetField(i, myResult[i]);

DataColumnCollection.Add()添加了具有默认名称的列(&#34; Column1&#34;,&#34; Column2&#34;,...)。

答案 1 :(得分:1)

您需要更多列,并且您应该在循环后将新行添加到dt。所以这应该是你想要的:

string[] myResult = {"Student" , "Micheal" , "7.5" , "9.5" , "6.5"};
DataTable dt = new DataTable();
dt.Columns.Add("myCategory");
dt.Columns.Add("Name");
dt.Columns.Add("Score 1");
dt.Columns.Add("Score 2");
dt.Columns.Add("Score 3");
DataRow row = dt.NewRow();

for (int i = 0; i < myResult.Length; i++)
{
    row[i] = myResult[i];       
}

dt.Rows.Add(row);

DataGridView

中的结果

Result

答案 2 :(得分:1)

创建一个类以清除代码

 class MyResult
 {
     public String Category { get; set; }
     public String Name { get; set; }
     public float Score1 { get; set; }
     public float Score2 { get; set; }
     public float Score3 { get; set; }

 }

在您的函数中编写以下代码。

 List<MyResult> result = new List<MyResult>();
 MyResult r1 = new MyResult
 {
     Category = "Student",
     Name = "Micheal",
     Score1 = 7.5f,
     Score2 = 9.5f,
     Score3 = 6.5f
 };

 result.Add(r1);

 DataTable dt = new DataTable();
 dt.Columns.Add("Category");
 dt.Columns.Add("Name");
 dt.Columns.Add("Score1");
 dt.Columns.Add("Score2");
 dt.Columns.Add("Score3");


 foreach (MyResult item in result)
 {
     DataRow row = dt.NewRow();
     row["Category"] = item.Category;
     row["Name"] = item.Name;
     row["Score1"] = item.Score1;
     row["Score2"] = item.Score2;
     row["Score3"] = item.Score3;
     dt.Rows.Add(row);
 }