• c#采用emit将DataTable转List


    前面已经说了List转DataTable,也整理了代码。

    现在转回来说说DataTable转List。

    先举一个例子

    public class Person

    {

       public int Age{get;set;}

      punlic string Name{get;set;}

    }

    一般我们要实现转换,最好是直接调用,类似

     public void ConvertDataRow(List<Person> lst,DataTable dt)
            {
                foreach(DataRow row in dt.Rows)
                {
                    Person person = new Person();
                    if(!row.IsNull("Name"))
                    {
                        person.Name = Convert.ToString(row["Name"]);
                    }
                    if (!row.IsNull("Age"))
                    {
                        person.Age = Convert.ToInt32(row["Age"]);
                    }
                    lst.Add(person);
                }
            }

    如果有外面一层方法调用。还可以是类似的代码

     public Person ConvertDataRow(DataRow row)
            {
    
                Person person = new Person();
                if (!row.IsNull("Name"))
                {
                    person.Name = Convert.ToString(row["Name"]);
                }
                if (!row.IsNull("Age"))
                {
                    person.Age = Convert.ToInt32(row["Age"]);
                }
                return person;
            }

    而我的实现就是输出的后面一种,将DataRow转换成实体。

    我就不贴具体的代码了。

    与List转DataTable不一样的地方是。一个model类转DataTable一定是固定的方法。就像什么是唯一一个方法。

    但是反过来,就不是了。一个DataTable可以转成多个model,同样多个DataTable也可以转成同一个model。

    这样就形成了多对多的关系,所以这里在缓存生成的动态方法时,就需要处理唯一标记的问题。我采用了2种方法。

    第一种是DataTable名称,同一个名称对应固定的一个动态方法。

    第二种是用DataTable的列数,所有列名称构造的一个字符串来标记。

    DataReader只有第二种。

  • 相关阅读:
    jq---方法总结
    Coderfroces 862 B . Mahmoud and Ehab and the bipartiteness
    Coin
    joisino's travel
    日天的终生大事(dp)
    Codefroces 852 G. Bathroom terminal
    Codefroces432 div2 A,B,C
    Atcoder ABC 069 C
    Codefroces 849 A,B
    HDU 6186 CS Course
  • 原文地址:https://www.cnblogs.com/jinyu20180311/p/10503794.html
Copyright © 2020-2023  润新知