我刚刚发现LINQ,请跟我一起全面!:-)
所以!我有一个数据层提供谁我的数据表,我想将它们转换为对象的列表.这些对象在spécific层DTO(数据传输对象)中定义.
如何将我的数据表的每一行映射到对象,并把所有的对象到一个列表?(今天我在场后"手动"字段)是否可以使用LINQ?我听说过LINQ2Entities?我对吗?
感谢帮助初学者理解......
如果对象不是太复杂,您可以使用:
public static class DataTableExtensions { public static IListToList (this DataTable table) where T : new() { IList properties = typeof(T).GetProperties().ToList(); IList result = new List (); foreach (var row in table.Rows) { var item = CreateItemFromRow ((DataRow)row, properties); result.Add(item); } return result; } private static T CreateItemFromRow (DataRow row, IList properties) where T : new() { T item = new T(); foreach (var property in properties) { property.SetValue(item, row[property.Name], null); } return item; } }
有了这个,你现在可以写:var list = YourDataTable.ToList
.
你可以在这里阅读:http://blog.tomasjansson.com/convert-datatable-to-generic-list-extension/
它是前一个问题的答案:在C#中将DataTable转换为通用列表
编辑:我应该补充一点,这不是linq,而是DataTable
我编写的一些扩展方法.此外,它正在使用约定,即您要映射的对象中的属性与DataTable中的属性相同.当然,这可以扩展为读取属性上的属性,或者方法本身可以采用Dictionary
可用于执行映射的简单方法.您还可以使用一些params string[] excludeProperties
可用于排除某些属性的功能来扩展它.