我已经创建了一个 OData 服务,现在我正尝试在客户端使用该服务。我想在 c# 查询表达式中创建一个表达式,例如下面的 url-
http://odata.org/Product-Service/Product(150)
上面的 url 在浏览器中工作正常,但我想在 C# 中为上面的 url 创建查询表达式。任何帮助将不胜感激。
最佳答案
您可以在 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。
此外,如果您的产品类包含导航属性,您将需要添加扩展查询选项:
var query = context.CreateQuery<Product>("Product").
AddQueryOption("$expand", "NavigationProperty");
关于c# - 如何为 Odata 创建按 Id 获取的查询表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23493451/