如何根据Id为Odata创建查询表达式

本文关键字:创建 查询 查询表 表达式 Odata 何根 Id | 更新日期: 2023-09-27 18:02:01

我已经创建了一个OData服务,现在我正在尝试在客户端使用该服务。我想创建一个表达式,例如在c#查询表达式中为下面的url -

http://odata.org/Product-Service/Product (150)

上面的url在浏览器中工作良好,但我想在c#中为上面的url创建查询表达式。

如何根据Id为Odata创建查询表达式

您可以在System.Data.Services.Client中使用DataServiceContext + DataServiceQuery来点击Url。请记住,由于延迟加载,在调用First()之前不会执行任何查询。

var context = new DataServiceContext(new Uri("http://odata.org/Product-Service"), DataServiceProtocolVersion.V3);
var query = context.CreateQuery<Product>("Product");
Product product = query.Where(p => p.Id == 150).First();
上面的

应该解析为http://odata.org/Product-Service/Product(150),您可以通过查看query.Entities集合来检查。集合中的每个实体将包含一个Uri。

另外,如果您的Product类包含导航属性,则需要添加展开查询选项:

var query = context.CreateQuery<Product>("Product").
   AddQueryOption("$expand", "NavigationProperty");