将LINQ查询结果转换为整数

3

我已经写了一个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());

我该如何解决这个问题?


你正在选择一个路由Linq对象... 相反,选择与你感兴趣的int值对应的属性。 - NoviceProgrammer
5个回答

10

那是因为 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);

3
看起来您正在选择最大的路由ID,那为什么不这样做呢:

只需执行以下操作:

route.Id = aspdb.RouteLinqs.Max(x => x.RouteId);

2
这段代码应该可以正常运行:
route.Id = Convert.ToInt32((res.FirstOrDefault()).FieldName); 

1

不确定你的RouteLinqs是如何定义的,但也许你正在寻找从类RouteLinqs中选择特定对象的方法。

var res = (from p in aspdb.RouteLinqs
                   orderby p.RouteId descending
                   select p.SomeProperty).Take(1);

在这种情况下,pRouteLinqs 的一个单独项,而 p.SomeProperty 应该是您的整数值。

0

首先创建 Linq:

IQueryable<int> query = (from p in aspdb.RouteLinqs
                           orderby p.RouteId descending
                           select p.Id);

然后运行:

 int result = query.FirstOrDefault();

一条命令内:

int result = (from p in aspdb.RouteLinqs
                           orderby p.RouteId descending
                           select p.Id).FirstOrDefault();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接