6

我一直在谷歌上搜索并在这里寻找答案,但我仍然无法理解一个非常基本的东西 - 如何将 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);

我更新了代码,它似乎正在工作。

4

2 回答 2

6

您不想为表中的每一行创建一个新集合,而是为整个表创建一个集合(集合中的一个对象为表中的一行创建):

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);
}
于 2013-05-26T13:21:15.320 回答
1

我对接受的解决方案有一点问题。它不允许在类型 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"],
     });
 }
于 2016-11-03T13:17:45.473 回答