我正在尝试将一个 DataTable 转换为 IEnumerable。其中 T 是我创建的自定义类型。我知道可以通过创建 List<T> 来实现,但我想知道是否有更简便的方法可以使用 IEnumerable。以下是我目前的代码:
private IEnumerable<TankReading> ConvertToTankReadings(DataTable dataTable)
{
var tankReadings = new List<TankReading>();
foreach (DataRow row in dataTable.Rows)
{
var tankReading =
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"]),
};
tankReadings.Add(tankReading);
}
return tankReadings.AsEnumerable();
}
关键部分是我正在创建一个
List<T>
,然后使用 AsEnumerable()
返回它。
dataTable.AsEnumerable()
,一直在用更长、更丑的方式:dataTable.Rows.Cast<DataSetName.SomeLongDataTableRowName>()
。 - Adam NofsingerAsEnumerable
扩展方法位于System.Data
命名空间中,但要使用它,请确保引用了System.Data.DataSetExtensions
程序集。 - jhappoldtdataTable.Cast<DataRow>()
以获取一个IEnumerable<DataRow>。 - codeMonkey