【发布时间】:2014-09-14 20:04:33
【问题描述】:
假设以下示例演示如何使用HttpClient 执行读取操作:
using (var client = new HttpClient())
{
client.BaseAddress = webUri;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var requestUrl = "/api/products?$filter=(Category eq 'Cars')";
var response = await client.GetAsync(requestUrl);
if (response.IsSuccessStatusCode)
{
var products = await response.Content.ReadAsAsync<List<Product>>();
}
}
到目前为止一切都很好,但是从 Linq 查询构造 REST 端点 Url 怎么样?
总而言之,目标是利用强类型的 Linq 表达式来构造 REST 端点 Url,例如查询:
var products = client.Get<List<Product>>().Where(p => p.Category == "Cars");
会变成:
/api/products?$filter=(Category eq 'Cars')
是否有任何 .Net 库允许将 Linq 表达式转换为 OData 查询选项字符串?
【问题讨论】: