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

LINQ将数据表映射到列表<MyObject>

如何解决《LINQ将数据表映射到列表<MyObject>》经验,为你挑选了1个好方法。

我刚刚发现LINQ,请跟我一起全面!:-)

所以!我有一个数据层提供谁我的数据表,我想将它们转换为对象的列表.这些对象在spécific层DTO(数据传输对象)中定义.

如何将我的数据表的每一行映射到对象,并把所有的对象到一个列表?(今天我在场后"手动"字段)是否可以使用LINQ?我听说过LINQ2Entities?我对吗?

感谢帮助初学者理解......



1> Tomas Jansso..:

如果对象不是太复杂,您可以使用:

public static class DataTableExtensions
{
   public static IList ToList(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可用于排除某些属性的功能来扩展它.

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