我已经创建了通用List并填充了一些对象.然后我在前面提到的List转换为DataTable以在DataGridView中使用.问题是,当我想从这个网格获取Row时,我有DataRow.我想将此转换为我的对象,但不知道如何做到这一点.也许你可以举一些例子?
谢谢
好吧,如果你不能或不会使用"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等).
另一种可能性是在您的域模型对象类型上有一个构造函数,它将采用DataRow
as参数并从中构造一个新对象.
渣
假设您正在使用一个类MyObject
,定义如下:
class MyObject { public string Foo { get; set; } public int Foo { get; set; } }
你可以这样做:
using System.Data.DataSetExtensions; ... Listlist = (from row in table.AsEnumerable() select new MyObject { Foo = row.Field ("foo"), Bar = row.Field ("bar") }).ToList();