如何通过Id为Odata创建查询表达式

use*_*587 3 c# wcf-rest odata wcf-web-api

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

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

上面的url在浏览器中工作正常,但我想在C#中为上面的url创建查询表达式.任何帮助都会非常明显.

Jay*_*cee 7

您可以使用DataServiceContext+ DataServiceQueryin System.Data.Services.Client来点击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();
Run Code Online (Sandbox Code Playgroud)

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

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

var query = context.CreateQuery<Product>("Product").
   AddQueryOption("$expand", "NavigationProperty");
Run Code Online (Sandbox Code Playgroud)