【问题标题】:webapi filter properties from dictionary<string,string>来自字典<string,string> 的 webapi 过滤器属性
【发布时间】:2014-01-20 16:52:50
【问题描述】:

我在我的 POST 方法中返回一个 IQueriable&lt;Dictionary&lt;string,string&gt;&gt;。我希望能够在字典上应用 OData 过滤器。例如:

字典是

Key = Place
Value = New York

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

**

但我得到一个错误:“:”实例属性'Place'未定义 键入'System.Collections.Generic.Dictionary`2[System.String

**

【问题讨论】:

  • 请提供您的代码和示例数据 :-)

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


【解决方案1】:

我认为您可以通过创建一个名为“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&lt;Dictionary&lt;string,string&gt;&gt; 实际上定义了Dictionary&lt;string,string&gt; 实例的集合。您看到的错误是绝对正确的,Dictionary 类型中没有名为 Place 的属性。

【讨论】:

    【解决方案2】:

    找到了第三方库的解决方案。 LinqToQuerystring

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多