我在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
**
答案 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());