来自字典的webapi过滤器属性<string,string> </string,string>

时间:2014-01-08 13:12:08

标签: c# asp.net-web-api odata

我在POST方法中返回IQueriable<Dictionary<string,string>>。我希望能够在字典上应用OData过滤器。例如:

字典是

Key = Place
Value = New York

my filter is ?$filter=Place eq 'New York'

**

  

但是我收到一个错误:“:”没有为实例属性'Place'定义   输入'System.Collections.Generic.Dictionary`2 [System.String

**

2 个答案:

答案 0 :(得分:0)

我认为您可以通过创建名为“Places”的GET方法更简单地解决您的问题,该方法采用名为key的参数并返回在Dictionary实例中查找key值的结果那个控制器。像这样:

[HttpGet]
public string Places(string key) {
    //TODO: Handle validation of value key parameter & missing keys
    return _placesDictionary[key];
}

IQueryable实现旨在对强类型集合起作用。您是伪代码,表示您打算按键值查询字典。

IQueryable<Dictionary<string,string>>实际上定义了Dictionary<string,string>个实例的 集合 。您看到的错误绝对正确,Place类型中没有名为Dictionary的属性。

答案 1 :(得分:0)

找到第三方lib的解决方案。 LinqToQuerystring

var queryValue = Request.RequestUri.ParseQueryString(); return _dictionary.LinqToQuerystring(queryValue.ToString());