在C#中将var转换为类对象

时间:2017-03-05 22:08:12

标签: c# asp.net-mvc linq asp.net-web-api get

我希望从我的ASP.NET Web API获得响应,该API使用对象类型Product进行响应。

然而,当我试图通过Postman获得回复时,它始终会返回

  

500内部服务器错误。

以下是我的代码,提前感谢您提供的任何帮助:

[ResponseType(typeof(Product))]
[Route("webapi/products/{productname}")]
public async Task<IHttpActionResult> GetProduct(string productname)
{
    var product = (Product)db.Products.Where(t => t.name.Contains(productname));
    //^^^^^^this seems to be the problem^^^^^^^//

    if (product == null)
    {
        return NotFound();
    }

    return Ok(product);
}

2 个答案:

答案 0 :(得分:1)

返回IQueryable<Product>(这意味着可能有多个)并且无法转换为Product。 如果你只想要一个,那么你可以从结果中取得第一个:

var product = (Product)db.Products.Where(t => t.name.Contains(productname)).FirstOrDefault();

这可以简化为:

var product = db.Products.FirstOrDefault(t => t.name.Contains(productname));

这将首先为您提供马赫条件的产品,如果没有,则为null。

编辑:正如评论中所提到的,此处不需要演员表,但是我在第一个例子中将其保留为与原始问题相关联。谢谢,Nico。

答案 1 :(得分:0)

如果返回IEnumerable,则无法将其强制转换为Product。如果你只想要第一个匹配的值,你最后可以调用FirstOrDefault:

let secondVC = tempNavVC.viewControllers[1] as! TableViewController2