从数据表添加到字典记录

Posted

技术标签:

【中文标题】从数据表添加到字典记录【英文标题】:Adding to dictionary records from data table 【发布时间】:2016-10-03 14:55:45 【问题描述】:

我是 MVVM 模式的新手。我创建了 MVVM 模式,我必须将列表填充到树视图控件。我有视图、视图模型和模型。我通过硬编码在模型中填充了数据。但现在我想要将我的 MS Access 数据表连接到模型中的列表而不是硬编码数据。我创建了 DAL lier 并连接了我的 MS Access 数据表,如下所示:

        using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.OleDb;
using System.Configuration;
using System.Data;
namespace DAL2

    public class PersonalDAL
    
       // static String _ConnectionString = ConfigurationManager.ConnectionStrings["ConnectionStr"].ConnectionString;
        OleDbConnection con = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\faisal\\Xerox2014\\wpf\\WPFHierarchy\\IconnectDB.accdb");

        public DataTable loademp( )
        
            con.Open();
            OleDbDataAdapter sda = new OleDbDataAdapter("select * from empTable", con);
            DataTable dt = new DataTable();
            sda.Fill(dt);


            con.Close();
            return dt;
        
    


这里的 loademp 方法将返回数据表。 在模型中,我只是想填写列表。我遇到的代码在这里:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using DAL2;
using System.Data;

namespace DevLake.OrgChart.UI.Model

    class OrgChartManager
    
        private static OrgChartManager self;

        //orgchart stored in dictionary
        private Dictionary<int, Node> list = new Dictionary<int, Node>();

        private OrgChartManager()
        

           DataTable my_datatable = new DataTable();
        my_datatable = new PersonalDAL().loademp();
            int ColumnCount = my_datatable.Columns.Count;
            foreach (DataRow dr in my_datatable.Rows)
            
                list.Add(dr);
               //******here I get stuck and throw syntax error on this line


            


            //hard coded populate data
                // list.Add(1, new Node  Id = 1, FirstName = "Joe", LastName =                                                       "Smith", ParentId = 1 );
            //list.Add(2, new Node  Id = 2, FirstName = "Rich", LastName =    "Angel", ParentId = 1 );
                 //list.Add(3, new Node  Id = 3, FirstName = "Mary", LastName = "Peach", ParentId = 1 );

在这里我无法填写它引发语法错误的列表。任何机构都可以帮助我如何用数据表数据填充我的列表。我的 MS Access 表如下所示:

ID  FirstName   LastName    ParentId
1   Joe Smith   1
10  Grey    Peech   9
11  Manny   Travel  9
2   Rich    Angel   1
3   Mary    Peach   1
4   Mike    Door    2
5   Jimmy   Fond    2
6   Ann Brown   4
7   George  Farm    4
8   Able    Jump    4
9   Corn    Shaw    1

我能够连接数据库并将数据表带到我的模型中,但是将数据表数据填充到列表中是我卡住的地方..请朋友们帮助我

我的节点类:

    class Node
    
        public int Id  get; set; 

        public string FirstName  get; set; 

        public string LastName  get; set; 

        public int ParentId  get; set; 

    


    Drow donw item contro within the data contarol

  https://scikit-learn.org/stable/ 

https://www.codemag.com/Article/1407051/Python-for-C

【问题讨论】:

如何执行此操作取决于 Node 类。那看起来像什么? 我的节点类:class Node public int Id get;放; 公共字符串名字 获取;放; 公共字符串姓氏 获取;放; 公共 int ParentId 获取;放; 这里有很多与 WPF/MVVM 无关的内容。应该将问题简化为仅从您的 DataRow 实例创建一个 Node 实例。 【参考方案1】:
        foreach (DataRow dr in my_datatable.Rows)
        
            Node node = new Node
            
                 Id = (int)dr["ID"]
                 FirstName = (string)dr["FirstName"],
                 LastName = (string)dr["LastName"],
                 ParentId = (int)dr["ParentId"]
            ;
            list[node.Id] = node;
        

【讨论】:

以上是关于从数据表添加到字典记录的主要内容,如果未能解决你的问题,请参考以下文章

怎样把一个字典的数据添加到另一个字典中?

如何从firebase数据库中检索数据作为字符串而不是字典并将其添加到数组中?

从 json 数据值创建字典

添加到if循环中的字典

Python从入门到放弃_字典

MySQL利用Navicat导出数据字典