我一直在谷歌搜索并在这里搜索答案,但我仍然无法理解一个非常基本的东西 - 如何将DataTable转换为Observable Collection?
这是我走了多远:
public ObservableCollection<Test> test;
public class Test
{
public int id_test { get; set; }
public string name { get; set; }
}
主..
DataTable TestTable = new DataTable();
TestTable.Columns.Add(new DataColumn("id_test", typeof(int)));
TestTable.Columns.Add(new DataColumn("name", typeof(string)));
DS.Tables.Add(TestTable);
var test = new ObservableCollection<Test>();
foreach(DataRow row in test_table.Rows)
{
var obj = new Test()
{
id_test = (int)row.ItemArray[0],
name = (string)row.ItemArray[1]
};
test.Add(obj);
我更新了代码,似乎正在运行。
答案 0 :(得分:4)
您不希望为表中的每一行创建新集合,而是为整个表创建一个集合(在表中为一行创建集合中的一个对象):
var test = new ObservableCollection<Test>();
foreach(var row in TestTable.Rows)
{
var obj = new Test()
{
id_test = (int)row["id_test"],
name = (string)row["name"]
};
test.Add(obj);
}
答案 1 :(得分:0)
我对已接受的解决方案有一点问题。它不允许类型为var的[]括号。
var test = new ObservableCollection<Test>();
foreach(DataRow row in TestTable.Rows)
{
test.Add(new Test()
{
id_test = (int)row["id_test"],
name = (string)row["name"],
});
}