Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq2Rest不';不处理嵌套属性?_C#_Asp.net Web Api_Odata - Fatal编程技术网

C# Linq2Rest不';不处理嵌套属性?

C# Linq2Rest不';不处理嵌套属性?,c#,asp.net-web-api,odata,C#,Asp.net Web Api,Odata,我有一个API,它返回序列化为JSON的c#对象 我需要在API URL上实现某种OData格式解析。 例如,最初看起来是这样的: 我正在寻找某种或多或少简单的库,它允许我解析Filter/OrderBy(OData)查询字符串,并在数据源上应用过滤器。我发现它的格式非常简单,我可以像这样使用它: var filtered = allItems.Filter(Request.Params).OfType<Content.UserProfile>(); 。。等 不幸的是,Linq2

我有一个API,它返回序列化为JSON的c#对象

我需要在API URL上实现某种OData格式解析。 例如,最初看起来是这样的:

我正在寻找某种或多或少简单的库,它允许我解析Filter/OrderBy(OData)查询字符串,并在数据源上应用过滤器。我发现它的格式非常简单,我可以像这样使用它:

var filtered = allItems.Filter(Request.Params).OfType<Content.UserProfile>();
。。等

不幸的是,Linq2Rest无法解析我的查询,并以一条消息失败 “ProfileProperties.Email未被识别为有效属性”


然后如何对具有嵌套属性的项执行此筛选?

查询URL是生成的还是您自己编写的?我本以为会是:

http://api.loc/userprofiles/all/?$orderby=ProfileProperties/Email
对于OData嵌套属性,通常使用斜杠(/)作为分隔符

否则,您应该包含一些有关如何生成查询URL的信息。

您可以使用 由微软提供

您不使用它有什么具体原因吗

//定义运费值大于30的订单的查询 //这是按发货日期排序的,降序

  DataServiceQuery<Order> selectedOrders = context.Orders
    .AddQueryOption("$filter", "Freight gt 30")
    .AddQueryOption("$orderby", "OrderID desc");
DataServiceQuery selectedOrders=context.Orders
.AddQueryOption(“$filter”,“运费gt 30”)
.AddQueryOption(“$orderby”,“OrderID desc”);

非常感谢!它现在似乎起作用了。Phew:)是的,最初的URL是我写的(我在测试新东西。。现在这一步似乎已经解决了,我的下一个问题是——我应该如何在客户端生成这些URL?你能告诉我这个吗?:)Linq2Rest也有客户端部分。看看这个教程:谢谢!我找到了这个页面,但我正在努力寻找IRestClient的实现;如果我不需要任何客户端和反序列化呢。我只需要Linq2Rest从Linq表达式(甚至应用于“dummy”属性-Provider.query)创建适当的查询字符串(URL)。Linq2Rest库有一个未记录的类ODataExpressionConverter-。创建一个实例,并使用Convert方法将表达式转换为OData筛选器。真是棒极了!非常感谢,您的库提供了我所需的一切,以获得完美的API:),并特别感谢您的响应速度如此之快!
  DataServiceQuery<Order> selectedOrders = context.Orders
    .AddQueryOption("$filter", "Freight gt 30")
    .AddQueryOption("$orderby", "OrderID desc");