Convert DataTable to IEnumerable in ASP.NET Core 2.0

后端 未结 7 1780
北荒
北荒 2020-12-15 22:39

I need to generate an \'IEnumerable from a DataTable that I receive as an input from another system. The following code worked in ASP.NET 4.6.1.

public st         


        
7条回答
  •  忘掉有多难
    2020-12-15 22:51

    Not about most efficient but for an alternative, you can use the Select method:

    DataRow[] rows= dataTable.Select();
    

    And now you have an IEnumerable of rows. This method may help someone:

    public static List ConvertDataTableToGenericList(DataTable dt)
    {
         var columnNames = dt.Columns.Cast()
                .Select(c => c.ColumnName)
                .ToList();
    
         var properties = typeof(T).GetProperties();
         DataRow[] rows= dt.Select();
         return rows.Select(row =>
         {
              var objT = Activator.CreateInstance();
              foreach (var pro in properties)
              {
                  if (columnNames.Contains(pro.Name))
                       pro.SetValue(objT, row[pro.Name]);
              }
    
              return objT;
         }).ToList();
    }
    

提交回复
热议问题