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

时间:2014-05-06 11:28:02

标签: c# odata wcf-rest wcf-web-api

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

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

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

1 个答案:

答案 0 :(得分:6)

您可以使用DataServiceContext中的DataServiceQuery + System.Data.Services.Client来点击网址。请记住,在由于延迟加载而调用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");