当前位置:  开发笔记 > 编程语言 > 正文

将DataRow转换为对象

如何解决《将DataRow转换为对象》经验,为你挑选了2个好方法。

我已经创建了通用List并填充了一些对象.然后我在前面提到的List转换为DataTable以在DataGridView中使用.问题是,当我想从这个网格获取Row时,我有DataRow.我想将此转换为我的对象,但不知道如何做到这一点.也许你可以举一些例子?

谢谢



1> marc_s..:

好吧,如果你不能或不会使用"ORM"(对象关系映射器,如Linq-to-SQL或NHibernate - 这正是这些工具所做的,并且对你很好),你将拥有自己这样做.

将DataRow转换为域对象模型是非常无聊的代码,实际上:

public Customer ConvertRowToCustomer(DataRow row)
{
   Customer result = new Customer();

   result.ID = row.Field("ID");
   result.Name = row.Field("CustomerName");
   ..... // and so on

   return result;
}

这里最大的挑战是使这个坚如磐石并处理(或避免)所有可能的错误(如字段为NULL等).

另一种可能性是在您的域模型对象类型上有一个构造函数,它将采用DataRowas参数并从中构造一个新对象.



2> Thomas Leves..:

假设您正在使用一个类MyObject,定义如下:

class MyObject
{
    public string Foo { get; set; }
    public int Foo { get; set; }
}

你可以这样做:

using System.Data.DataSetExtensions;

...

List list = (from row in table.AsEnumerable()
                       select new MyObject
                       {
                            Foo = row.Field("foo"),
                            Bar = row.Field("bar")
                       }).ToList();

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有