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

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

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

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

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

 var context = new DataServiceContext(new Uri("http://odata.org/Product-Service"), DataServiceProtocolVersion.V3); var query = context.CreateQuery("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"). AddQueryOption("$expand", "NavigationProperty");