Tom*_*son 21
如果对象不是太复杂,您可以使用:
public static class DataTableExtensions
{
public static IList<T> ToList<T>(this DataTable table) where T : new()
{
IList<PropertyInfo> properties = typeof(T).GetProperties().ToList();
IList<T> result = new List<T>();
foreach (var row in table.Rows)
{
var item = CreateItemFromRow<T>((DataRow)row, properties);
result.Add(item);
}
return result;
}
private static T CreateItemFromRow<T>(DataRow row, IList<PropertyInfo> properties) where T : new()
{
T item = new T();
foreach (var property in properties)
{
property.SetValue(item, row[property.Name], null);
}
return item;
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,你现在可以写:var list = YourDataTable.ToList<YourEntityType>().
你可以在这里阅读:http://blog.tomasjansson.com/convert-datatable-to-generic-list-extension/
它是前一个问题的答案:在C#中将DataTable转换为通用列表
编辑:我应该补充一点,这不是linq,而是DataTable我编写的一些扩展方法.此外,它正在使用约定,即您要映射的对象中的属性与DataTable中的属性相同.当然,这可以扩展为读取属性上的属性,或者方法本身可以采用Dictionary<string,string>可用于执行映射的简单方法.您还可以使用一些params string[] excludeProperties可用于排除某些属性的功能来扩展它.
| 归档时间: |
|
| 查看次数: |
11707 次 |
| 最近记录: |