【发布时间】:2017-09-18 05:24:02
【问题描述】:
我正在尝试将列的数据从 DataTable 提取到 List<string>。示例代码如下:
List<String> userNames = dataTable.Rows.OfType<DataRow>().
Select(dr => dr.Field<string>("UserName"))
.ToList();
我收到来自 Visual Studio 2015 的错误消息:
不能使用 lambda 表达式作为动态参数 在没有先将其强制转换给委托人的情况下分派操作或 表达式树类型。
DataTable 有 3 行,所有数据的类型都是string。
Google 搜索了几个小时,仍然无法解决。我该如何解决这个错误?
更新:@IvanStoev 注意到我 dataTable 是一个 dynamic 变量,而不是 DataTable。
【问题讨论】:
-
你确定这条线会产生错误吗?请提供Minimal, Complete, and Verifiable example
-
我可以复制编译错误的唯一方法是
dataTable变量的类型为dynamic。是这样吗?为什么不是DataTable? -
@OfirWinegarte 是的。我正在尝试通过 NPOI 库读取 excel 文件。
-
@IvanStoev 是的,它是
dynamic,而不是DataTable,我刚刚检查了代码并更新了问题,抱歉我的错误。 -
然后改成
DataTable或者使用cast -((DataTable)dataTable).Rows....