我编写了一个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);

10-08 07:14