我编写了一个LINQ查询,该查询应返回一个int值。但我无法将此值转换为int并发生了异常:
无法将类型为“ QuickRoutes.DAL.RouteLinq”的对象转换为类型为“ System.IConvertible”的对象。
这是我的LINQ:
var res = (from p in aspdb.RouteLinqs
orderby p.RouteId descending
select p).Take(1);
并且异常发生在这里:
route.Id =Convert.ToInt32(res.FirstOrDefault());
我怎么解决这个问题?
最佳答案
这是因为res.FirstOrDefault()
返回一个RouteLinqs
类型的对象,因为您正在使用select p
,所以可以使用select p.FieldName
选择一个字段,其中FieldName是转换所需的属性,可能是RouteId
您可能要查询linq查询中的特定字段。
var res = (from p in aspdb.RouteLinqs
orderby p.RouteId descending
select p.RouteId).Take(1); //p.RouteID or any field you want.
或使用当前查询,您可以执行以下操作:
route.Id =Convert.ToInt32(res.FirstOrDefault().RouteID);