使用ActionResult中的字符串返回一个匹配的记录?

时间:2012-04-17 09:02:56

标签: c# asp.net-mvc-3 razor

我遇到了MVC3框架的问题,并从我的数据库中提取了特定数据:

以下ActionResult包含一个名为searchString的字符串,并且是一个导演名称,我想使用搜索字符串来检索与名称匹配的数据并将其传递给视图以便显示:

    public ActionResult Index(string searchString)
    {
        var director = from d in db.Directors select d;

        director = director.Where(searchString == d.Name);

        return View(director);
    }

Director名称作为Director.Name存储在数据库中。

如何检索名称为== searchString?

的diretor

2 个答案:

答案 0 :(得分:1)

您的查询可能会匹配多行:

public ActionResult Index(string searchString)
{
    var directors = 
        from d in db.Directors 
        where d.Name == searchString
        select d;
    return View(directors);
}

现在您的观点可以强烈输入IEnumerable<Director>

@model IEnumerable<Director>
@foreach (var director in Model)
{
    <div>@item.Name</div>
}

如果您只想获得一个导演,可以使用FirstOrDefault方法:

var director = 
    (from d in db.Directors 
     where d.Name == searchString
     select d
    ).FirstOrDefault();

这将返回结果集的第一行,如果没有与您的查询匹配的结果,则返回null。

答案 1 :(得分:0)

使用

 director = director.Where(d => d.Name == searchString);