如何使用 lambda 表达式将 DataTable 记录添加到列表中? [复制]
Posted
技术标签:
【中文标题】如何使用 lambda 表达式将 DataTable 记录添加到列表中? [复制]【英文标题】:How to get DataTable records in to list using lambda expression? [duplicate] 【发布时间】:2016-09-24 06:23:44 【问题描述】:在给定的代码中,我编写了 lambda 表达式,但它显示了一个错误——无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型。
EmployeeDataOperation emp = new EmployeeDataOperation(); //Class to perform CRUD operation.
List<EmployeeProp> data = new List<EmployeeProp>();
dt = emp.getEmployeeData();//return datatable with records.
//I want to use lambda expression to use Datatable data as a list
data = (from a in dt
select new EmployeeProp Name = a.Name, Email = a.Email ).ToList();
//error near select
return View(data);
【问题讨论】:
这里我已经提到我要使用lamda表达式。 【参考方案1】:您可以使用.Field
linq 扩展或索引/列名(ex row["columnname"] 访问来自DataRow
的值。我建议使用Field
扩展,因为它甚至可以处理nullable
类型。
data = dt.AsEnumerable()
.Select(row=> new EmployeeProp ()
Name = row.Field<string>("Name"),
Email = row.Field<string>("Email ")
// Other properties....
)
.ToList();
【讨论】:
【参考方案2】:你也可以试试这个,创建 EmployeeProp() 对象
data = (from a in dt
select new EmployeeProp() Name = a.Name, Email = a.Email ).ToList();
【讨论】:
【参考方案3】: var myData = (from a in dt.AsEnumerable()
select new EmployeeProp
Name = a.Field<string>("Name"),
Email = a.Field<string>("Email")
).ToList();
【讨论】:
我只是想尝试一下,否则,我正在使用实体框架,它将返回 DbSet 并轻松转换为列表。 我错过了你有新的 EmployeeProp 。所以它将是一个 List以上是关于如何使用 lambda 表达式将 DataTable 记录添加到列表中? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何将 let* 表示为 lambda 表达式(不是常规 let)