无法将类型为“ System.Data.EnumerableRowCollection`1 [System.Int32]”的对象转换为类型为“ System.IConvertible”的对象

时间:2018-06-28 03:24:06

标签: c# linq datatable

我正在尝试通过下面的代码来存储价值,但这给了我错误。

int dqty=  Convert.ToInt32(from row in result.AsEnumerable()
where row.Field<string>("batch_num") == k_batch.ToString() 
select row.Field<int>("qty"));

基本上我想检索“ qty”的值。

1 个答案:

答案 0 :(得分:3)

无论您遇到其他问题,您都无法将列表/集合转换为整数

您需要使用FirstOrDefault或类似的

Enumerable.FirstOrDefault Method (IEnumerable)

  

返回序列的第一个元素,如果返回则返回默认值   序列不包含任何元素。

示例

 int dqty = (from row in result.AsEnumerable()
              where row.Field<string>("batch_num") == k_batch.ToString() 
              select row.Field<int>("qty")).FirstOrDefault();

更新

更多精彩

var list = new List<int>()  {23, 345, 546, 345};

var result = (
    from row in list
    where row > 23
    select row).FirstOrDefault();

Console.WriteLine(result);

输出

345

Full Demo here