通过 URL 查询 oData Service .net c# 的最佳方式
Best way to pass throug URL query for oData Service .net c#
我有以下内容:
- 启用 WebAPI oData 的端点应用程序后面有一个小数据库
- .NET MVC 前端,带有一些 HTML5 东西和一些程序逻辑
我通过 (1) 中的服务和 (2) 中的应用程序消费数据。
由于应用程序 (1) 启用了 oData,我想为高级用户提供在应用程序 (2) 中时在浏览器中编写 URL 过滤器的选项。所以他们可以附加这样的东西 $top=2&$orderby=name
获取 url 过滤器并传递给应用程序 (2) 中的 oData 服务的最佳方法是什么?我找不到简单地传递字符串的方法。我发现使用 lync 查询的唯一方法是 AddQueryOptions。
有什么建议吗?
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:14800/";
var container = new Default.Container(new Uri(serviceUri));
var product = new ODataDemoService.Models.Product();
// grab
Uri myUri = new Uri("http://localhost:14800/Products?$top=2&$orderby=name");
NameValueCollection nv = HttpUtility.ParseQueryString(myUri.Query);
foreach (string key in nv)
{
// build a filter string here
}
// Append the filter string using AddQueryOptions
foreach (var p in container.Products.AddQueryOption("$filter","(Name eq 'Hat') or (Name eq 'Socks')"))
{
Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
}
您可以使用 DataServiceContext.Execute<>
var products = container.Execute<Product>(new Uri()), "GET"); // You can pass the Uri as what you want
foreach(var p in products)
{
Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
}
我有以下内容:
- 启用 WebAPI oData 的端点应用程序后面有一个小数据库
- .NET MVC 前端,带有一些 HTML5 东西和一些程序逻辑
我通过 (1) 中的服务和 (2) 中的应用程序消费数据。
由于应用程序 (1) 启用了 oData,我想为高级用户提供在应用程序 (2) 中时在浏览器中编写 URL 过滤器的选项。所以他们可以附加这样的东西 $top=2&$orderby=name
获取 url 过滤器并传递给应用程序 (2) 中的 oData 服务的最佳方法是什么?我找不到简单地传递字符串的方法。我发现使用 lync 查询的唯一方法是 AddQueryOptions。
有什么建议吗?
// TODO: Replace with your local URI.
string serviceUri = "http://localhost:14800/";
var container = new Default.Container(new Uri(serviceUri));
var product = new ODataDemoService.Models.Product();
// grab
Uri myUri = new Uri("http://localhost:14800/Products?$top=2&$orderby=name");
NameValueCollection nv = HttpUtility.ParseQueryString(myUri.Query);
foreach (string key in nv)
{
// build a filter string here
}
// Append the filter string using AddQueryOptions
foreach (var p in container.Products.AddQueryOption("$filter","(Name eq 'Hat') or (Name eq 'Socks')"))
{
Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
}
您可以使用 DataServiceContext.Execute<>
var products = container.Execute<Product>(new Uri()), "GET"); // You can pass the Uri as what you want
foreach(var p in products)
{
Console.WriteLine("{0} {1} {2}", p.Name, p.Price, p.Category);
}