Convert DataTable to IEnumerable

前端 未结 8 1608
梦毁少年i
梦毁少年i 2020-11-29 22:50

I am trying to convert a DataTable to an IEnumerable. Where T is a custom type I created. I know I can do it by creating a List but I was thinking if t

8条回答
  •  庸人自扰
    2020-11-29 23:39

    There's also a DataSetExtension method called "AsEnumerable()" (in System.Data) that takes a DataTable and returns an Enumerable. See the MSDN doc for more details, but it's basically as easy as:

    dataTable.AsEnumerable()
    

    The downside is that it's enumerating DataRow, not your custom class. A "Select()" LINQ call could convert the row data, however:

    private IEnumerable ConvertToTankReadings(DataTable dataTable)
    {
        return dataTable.AsEnumerable().Select(row => new TankReading      
                {      
                    TankReadingsID = Convert.ToInt32(row["TRReadingsID"]),      
                    TankID = Convert.ToInt32(row["TankID"]),      
                    ReadingDateTime = Convert.ToDateTime(row["ReadingDateTime"]),      
                    ReadingFeet = Convert.ToInt32(row["ReadingFeet"]),      
                    ReadingInches = Convert.ToInt32(row["ReadingInches"]),      
                    MaterialNumber = row["MaterialNumber"].ToString(),      
                    EnteredBy = row["EnteredBy"].ToString(),      
                    ReadingPounds = Convert.ToDecimal(row["ReadingPounds"]),      
                    MaterialID = Convert.ToInt32(row["MaterialID"]),      
                    Submitted = Convert.ToBoolean(row["Submitted"]),      
                });
    }
    

提交回复
热议问题