我使用.Net Backend在Azure上开发移动服务。
我正在编写自定义API以在ID之间从数据库获取值。例如,获取3到50 Id之间的值。
但我的字符串ID有问题。 MObile服务是MVC的一种形式。我的模型创建的数据库名为" New"。 "新" model类是" EntityData"的子类。当然。所以新模特课得到了#34; Id"来自" EntityData"的行。在" EntityData" class,Id row是string。
我想在Id' s之间从数据库获取数据,但数据库具有字符串格式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();
这是我的例外:
&#34; LINQ to Entities无法识别方法&#39; Int32 解析(System.String)&#39;方法,这个方法无法翻译 进入商店&#34;
如何在Id之间从数据库获取数据?我无法做到,因为&#34; EntityData&#34; class有Id类型的字符串。
答案 0 :(得分:0)
当DB字段为int时。 你可以直接比较整数。 a&lt;湾
在Linq to entities Expression中使用它之前,需要将String解析为int。
因此在比较中使用Int值。你不能在EF中嵌入调用int.parse。
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();
答案 1 :(得分:0)
有一个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 );