Roy*_*mir 2 c# linq linq-to-dataset
课程:
class Foo
{
public int Id { get; set; }
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
名单
List<Foo> lst = new List<Foo>();
Run Code Online (Sandbox Code Playgroud)
数据表:
DataTable dt = GetFromDb ()....
Run Code Online (Sandbox Code Playgroud)
我想填写lst来自的记录dt.
我做过:
Array.ForEach(dt.AsEnumerable().ToArray(), y = > lst.Add(new Foo()
{
Id = int.Parse(y["id"].ToString()), Name = y["name"].ToString()
}));
Run Code Online (Sandbox Code Playgroud)
题 :
dt.AsEnumerable().Select(_ => fill lst )吗?我知道选择签名的一部分(在这种情况下)是Func<datarow,void>不会编译的
但是,除了我的丑陋方式之外,还有其他办法吗?
试试这个
var fooList = (from t in dt.AsEnumerable()
select new Foo { Id = t.Field<int>("Id"),
Name= t.Field<string>("Name") }).ToList();
Run Code Online (Sandbox Code Playgroud)
DataTable上的AsEnumerable扩展方法将返回DataRows集合.然后使用必填字段从Linq结果中进行投影.由于它是dataRow类型,因此您需要指定每个列类型的内容.
var foos = from row in dt.AsEnumerable()
select new Foo()
{
Id = row.Field<int>("id"),
Name = row.Field<string>("name")
};
// create a new list
List<Foo> lst = foos.ToList();
// update: add items to an exisiting list
fooList.AddRange(foos);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
228 次 |
| 最近记录: |