C# Linq到实体查询字符串Id比较到整数

C# Linq到实体查询字符串Id比较到整数,c#,entity-framework,azure,linq-to-entities,azure-mobile-services,C#,Entity Framework,Azure,Linq To Entities,Azure Mobile Services,我正在Azure上开发一个带有.Net后端的移动服务 我正在编写一个自定义API来从ID之间的数据库中获取值。例如,获取3-50个Id之间的值 但是我有一个字符串ID的问题。移动服务是MVC的一种形式。由名为“New”的模型创建的数据库。“新”模型类当然是“EntityData”的子类。所以新模型类从“EntityData”中获取“Id”行。在“EntityData”类中,Id行是字符串 我想从Id之间的数据库获取数据,但数据库具有字符串格式Id行。我如何获得价值观 birfincankafei

我正在Azure上开发一个带有.Net后端的移动服务

我正在编写一个自定义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();
birfincankafeinService.Models.birfincankafeinContext上下文=新模型。birfincankafeinContext();
var queryResults=context.News.OrderByDescending(x=>x.Id)
.Where(x=>int.Parse(x.Id)>startId&&int.Parse(x.Id)
以下是我的例外:

“LINQ to实体无法识别方法'Int32' Parse(System.String)“”方法,无法转换此方法 “进商店”

如何从Id之间的数据库获取数据?我不能这样做,因为“EntityData”类的Id类型为字符串

当DB字段为int时。 您可以直接比较整数。a 在Linq to entities表达式中使用字符串之前,需要将字符串解析为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();
birfincankafeinService.Models.birfincankafeinContext上下文
=新模型。birfincankafeinContext();
var idAsInt=int.Parse(x.Id);
var queryResults=context.News.OrderByDescending(x=>x.Id)
其中(x=>idAsInt)>startId&&idAsInt
有一个SqlFunctions类,它公开了几个SQL Server基于T-SQL的函数,用于EF查询。不幸的是,CAST和CONVERT语句没有公开。目前最好的选择是实现一个存储过程,该过程执行所需的筛选并返回新闻对象的完整表示形式

或者,如果没有大量数据,可以将所有数据返回到客户端,此时可以使用.NET函数,例如:

var queryResults = context.News.ToList().Where(x=> int.Parse(x.Id) > startId && int.Parse(x.Id) < endId );
var queryResults=context.News.ToList()。其中(x=>int.Parse(x.Id)>startId&&int.Parse(x.Id)
x不是局部变量。x是函数的变量。x在“我的代码”中指定数据库的Id行