LINQ:要列出的数据表 [重复]

Posted

技术标签:

【中文标题】LINQ:要列出的数据表 [重复]【英文标题】:LINQ: DataTable to List [duplicate] 【发布时间】:2014-01-09 02:41:35 【问题描述】:

如何实现下面的数据表到通用列表的转换?

我正在尝试这个:

List<Emp> lstEmp= new List<Emp>(from prod in MyDatatable.AsEnumerable<Emp>() select prod);

【问题讨论】:

How do you convert a DataTable into a generic list? @huMptyduMpty:但 Jon Skeets 的回答没有回答这个问题。 OP 想要从 DataRow 初始化一个自定义类并创建一个 List @TimSchmelter:不是 Jons 的答案……还有其他答案可以做到这一点! 【参考方案1】:
var empList = MyDatatable.AsEnumerable().Select( row => 
   new Emp
   
       Name= row.Field<string>("Name") // set the properties accordingly 
   ).ToList();

【讨论】:

我不想这样做:Name= row["Name"].ToString()..直接转换的任何可能性? @user2519971 检查我的更新,谢谢蒂姆【参考方案2】:

试试这个,

List<Emp> target = dt.AsEnumerable()
     .Select(row => new Emp
     
         Name = row.Field<string>("Name")
     ).ToList();

【讨论】:

实际上是否真的需要指定每个字段。如果 LINQ 可以做到这一点,我想跳过这个。只是为了避免每个字段都这样做: Name= row.Field("Name") OR Name = String.IsNullOrEmpty(row.Field(1))... 你也可以使用文件名,而不是(1)。

以上是关于LINQ:要列出的数据表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

c# linq groupby是默认去掉重复行吗

如何使用 group by 和 order by LINQ DataTable 以删除重复数据

C# - 在 Linq Where Any 语句中使用的要列出的字符串

如何使用 LINQ 选择 WHERE NOT EXIST?

要列出的 Pandas DataFrame 列[重复]

linq怎么选出重复数据中较大的一个