目前,我正在使用:
DataTable dt = CreateDataTableInSomeWay();
List<DataRow> list = new List<DataRow>();
foreach (DataRow dr in dt.Rows)
{
list.Add(dr);
}
Run Code Online (Sandbox Code Playgroud)
有更好的/神奇的方式吗?
免责声明:我知道它在SO的很多地方都被问过.
我的查询有点不同.
编码语言:C#3.5
我有一个名为cardsTable的DataTable从DB中提取数据,我有一个类卡,它只有一些属性(没有构造函数)
public class Cards
{
public Int64 CardID { get; set; }
public string CardName { get; set; }
public Int64 ProjectID { get; set; }
public Double CardWidth { get; set; }
public Double CardHeight { get; set; }
public string Orientation { get; set; }
public string BackgroundImage { get; set; }
public string Background { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想将cardsTable数据插入List类型的对象.
我的数据将在其中包含空字段,因此当我转换数据时该方法不应该出错.以下方法是最好的方法吗?
DataTable dt = GetDataFromDB();
List<Cards> target = dt.AsEnumerable().ToList().ConvertAll(x => new Cards { CardID …Run Code Online (Sandbox Code Playgroud) 我怎么能转换DataTable的IEnumerable<dynamicObject>?
例如,我想转换任何 DataTable
ID | Name DI | emaN
--------- or ---------
1 | x 2 | x
2 | y 1 | y
Run Code Online (Sandbox Code Playgroud)
在对象列表中
// list 1 (ex 1) // list 2 (ex 2)
{ {
{ ID = 1, Name = "x" } { DI = 2, emaN = "x" }
{ ID = 2, Name = "y" } { DI = 1, emaN = "y" }
} }
Run Code Online (Sandbox Code Playgroud)
所以
list1.First().ID // 1 …Run Code Online (Sandbox Code Playgroud) 我有一个返回数据表的数据层选择方法.它是从业务层方法调用的,然后应该返回强类型的通用List.
我想做的是非常相似(但不一样)这个问题:
如何将DataTable转换为通用列表?
有什么不同之处在于我希望列表包含强类型对象而不是数据行(同样,我还没有这里可用的linq).
我很关心表现.然后将从表示层调用业务层方法,并且将迭代结果以显示给用户.在业务层添加额外的迭代似乎非常浪费,只能立即再次进行演示,所以我希望尽可能快.
这是一个常见的任务,所以我真的在寻找一个可以反复重复的好模式.