【发布时间】:2016-04-18 17:45:04
【问题描述】:
我有一个 DataTable orders,我正在使用 lambda 表达式过滤掉没有任何循环的记录。 if 条件中的第一行工作正常并返回有效记录。
if (orders.Rows.Count > 0)
{
//This line returns a record
var defaultOrder = orders.Rows.Cast<DataRow>().Where(p => p.Field<bool>("IsDefault")).ToList();
//The line below gives me an exception Specified cast is not valid.
var defaultOrderID = orders.Rows.Cast<DataRow>().Where(p => p.Field<bool>("IsDefault")).Select(p => p.Field<long>("OrderID")).FirstOrDefault();
}
现在,我想从此记录中获取特定列的值,但出现以下异常
PS:我可以在调试模式下的 DB 和 defaultOrder 变量中看到 OrderID 的值是 4。
IsDefault 的数据类型是 bit,OrderID 在数据库中是 int。两者都不为空。
【问题讨论】:
-
数据库表中IsDefault和OrderId的字段类型是什么?
-
问题中更新的详细信息
标签: c# lambda casting datatable