我有一个阵列。
我将此数组保存到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
如何添加这样的列。
答案 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
:
答案 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);
}