我创建了一个OData服务,现在我正在尝试在客户端使用此服务。我想创建一个表达式,例如c#查询表达式中的下面的url -
http://odata.org/Product-Service/Product(150)
以上网址在浏览器中工作正常,但我想在C#中为上面的网址创建查询表达式。任何帮助都会非常明显。
答案 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");