Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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# 查询字符串的Web API控制器GETter可以是通用的吗?_C#_Entity Framework_Asp.net Web Api - Fatal编程技术网

C# 查询字符串的Web API控制器GETter可以是通用的吗?

C# 查询字符串的Web API控制器GETter可以是通用的吗?,c#,entity-framework,asp.net-web-api,C#,Entity Framework,Asp.net Web Api,来自微软的 最后,添加按类别查找产品的方法: public IEnumerable GetProductsByCategory(字符串类别) { 返回repository.GetAll()。其中( p=>string.Equals(p.Category,Category,StringComparison.OrdinalIgnoreCase)); } 如果请求URI具有查询字符串,Web API将尝试将查询参数与控制器方法上的参数相匹配。因此,形式为“api/products?category=

来自微软的

最后,添加按类别查找产品的方法:

public IEnumerable GetProductsByCategory(字符串类别)
{
返回repository.GetAll()。其中(
p=>string.Equals(p.Category,Category,StringComparison.OrdinalIgnoreCase));
}
如果请求URI具有查询字符串,Web API将尝试将查询参数与控制器方法上的参数相匹配。因此,形式为“api/products?category=category”的URI将映射到此方法

有没有办法让这个通用?如GetProductsByWhateverisinthuri(字符串WhateverIsInTheURI)或“api/products?whatever=whatever”


谢谢。

我不确定我是否会将其描述为“泛型”,但您可以使用一种完全不使用参数绑定的全面路线。这将是一个“在一个方法中接受任何类型的参数”的方法

public IEnumerable Get()
{
List retval=新列表();
var qryPairs=Request.GetQueryNameValuePairs();
foreach(qryPairs中的var q)
{
retval.Add(“键:+q.Key+”值:+q.Value);
}
返回返回;
}

你到底想做什么?
getProductsByWhateverisinthuri
的目的是什么?该特定方法仅映射为在URI中作为查询字符串处理
?category=\u category
。这被映射到`GetProductsByCategory(字符串类别),因为参数的名称与URI中查询的名称匹配。我试图找出是否有一种方法可以在一个泛型方法中接受任何类型的参数。很抱歉,我刚才错过了这个。。。这很好,但我还需要将键的值(基于键的名称)与存储库中的值(如上面的.Where()所示)进行匹配。我如何修改此代码才能做到这一点?或者我只是看不到。有很多方法可以做到这一点。像这样的事情应该让你开始-
public IEnumerable<Product> GetProductsByCategory(string category)
{
    return repository.GetAll().Where(
            p => string.Equals(p.Category, category, StringComparison.OrdinalIgnoreCase));
}
public IEnumerable<string> Get()
{
    List<string> retval = new List<string>();

    var qryPairs = Request.GetQueryNameValuePairs();
    foreach (var q in qryPairs)
    {
        retval.Add("Key: " + q.Key + " Value: " + q.Value);
    }

    return retval;
}