3
我有一個動態生成的數據表,所以我不知道它包含的列數。我想構建一個包含每行中每個字段的列名和值的IEnumerable對象。是否可以從動態數據表中構建一個對象?
我不想使用DataRow對象作爲類型。
有沒有辦法做到這一點?
我有一個動態生成的數據表,所以我不知道它包含的列數。我想構建一個包含每行中每個字段的列名和值的IEnumerable對象。是否可以從動態數據表中構建一個對象?
我不想使用DataRow對象作爲類型。
有沒有辦法做到這一點?
它已經枚舉,爲什麼儘量做到枚舉時,它已經是:
// Results = DataSet
foreach (DataTable table in results.Tables)
{
Console.WriteLine("Table: " + table.TableName);
foreach (DataRow row in table.Rows)
{
Console.WriteLine(" Row");
foreach (DataColumn column in table.Columns)
{
Console.WriteLine(" " + column.ColumnName + ": " +
row[column]);
}
}
}
因爲我真的不明白你要完成的任務;或者更確切地說,你的最終目標是什麼,我把它作爲一個有趣的小練習。我使用了擴展方法;但有可能的方法來提高在其...
public static class DataTableExtension
{
public static IEnumerable<IEnumerable<KeyValuePair<string, object>>> Items(this DataTable table)
{
var columns = table.Columns.Cast<DataColumn>().Select(c => c.ColumnName);
foreach (DataRow row in table.Rows)
{
yield return columns.Select(c => new KeyValuePair<string, object>(c, row[c]));
}
}
}
static void Main(string[] args)
{
DataTable table = new DataTable();
table.Columns.Add("Last Name");
table.Columns.Add("First Name");
table.Rows.Add("Tim", "Taylor");
table.Rows.Add("John", "Adams");
foreach (var row in table.Items())
{
foreach (var col in row)
{
Console.WriteLine("{0}, {1}\t", col.Key, col.Value);
}
Console.WriteLine();
}
Console.ReadLine();
}
輸出看起來像這樣...
Last Name, Tim
First Name, Taylor
Last Name, John
First Name, Adams
是的,我知道,但就像我說的,我不希望使用的DataRow作爲類型。 – Tim 2011-03-17 20:31:14
理想情況下,我想創建一個List <>對象,但我不知道如何做到這一點與未知列名 – Tim 2011-03-17 20:33:25
可能是一本字典嗎? – Aidiakapi 2011-03-17 20:43:54