Linq到实体查询字符串Id与整数比较
本文关键字:整数 比较 Id 字符串 实体 查询 Linq | 更新日期: 2023-09-27 18:18:51
我正在使用。net后端开发Azure上的移动服务。
我正在编写一个自定义API从ID之间的数据库获取值。例如,获取3 - 50个Id之间的值。
但是我有一个字符串ID的问题。移动服务是MVC的一种形式。我的数据库创建了我的模型名为"新"。"New"模型类是"EntityData"的子类。所以新模型类从"EntityData"中获取"Id"行。在"EntityData"类中,Id行是字符串。
我想从Id之间的数据库获取数据,但数据库有字符串格式Id行。我如何获得价值?
birfincankafeinService.Models.birfincankafeinContext context = new Models.birfincankafeinContext();
var queryResults = context.News.OrderByDescending(x=>x.Id)
.Where(x=> int.Parse(x.Id) > startId && int.Parse(x.Id) < endId ).ToList();
这里是我的例外:
"LINQ to Entities不能识别Int32方法。解析(System.String)'方法,此方法无法翻译进入商店"
我如何从Id之间的数据库获取数据?我不能这样做,因为"EntityData"类具有字符串的Id类型。
有一个SqlFunctions类,它公开了几个SQL Server的基于T-SQL的函数,以便在EF查询中使用。不幸的是,CAST和CONVERT语句没有公开。目前最好的选择是实现一个存储过程,它执行所需的过滤并返回News对象的完整表示。
或者,如果你没有大量的数据,你可以返回所有的数据到客户端,此时你可以使用。net函数,如:
var queryResults = context.News.ToList().Where(x=> int.Parse(x.Id) > startId && int.Parse(x.Id) < endId );
当DB字段为int时。你可以直接比较整数。& lt;b .
在Linq to entities表达式中使用它之前,您需要将String解析为int。
因此在比较中使用Int值。你不能有对int的内嵌调用。
birfincankafeinService.Models.birfincankafeinContext context
= new Models.birfincankafeinContext();
var idAsInt = int.Parse(x.Id);
var queryResults = context.News.OrderByDescending(x=>x.Id)
.Where(x=> idAsInt) > startId && idAsInt < endId ).ToList();