查询返回查询,而不是结果

时间:2018-10-08 11:43:28

标签: c# asp.net-mvc entity-framework linq

在我的MVC应用中,我想获取用户正在为其创建评论的当前餐厅的名称。

我创建了一个简单的Linq查询,以使用查询字符串中通过restaurantId发送的信息将其提取出来:

控制器

[HttpGet]
public ActionResult Create(int restaurantId)
{
    var restuarantName = from r in _db.Restaurant
                         where r.Id == restaurantId
                         select r.Name;

    ViewBag.RestaurantName = restuarantName;

    return View();
}

但是,我得到的结果是:

"New Review for SELECT [EXTENT1].[NAME] AS [NAME] FROM [DBO].[RESTAURANT] AS [EXTENT1] WHERE [EXTENT1].[ID] = @P__LINQ__0".

在视图中提供以下内容:

@ViewBag.RestaurantName

我在LinqPad中检查了查询,并成功返回了一个名称,为什么它似乎没有执行?

餐厅模型

public class Restaurant
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
    public virtual ICollection<Reviews> Reviews { get; set; }
}

数据库上下文

public DbSet<Restaurant> Restaurant { get; set; }

3 个答案:

答案 0 :(得分:2)

restuarantName的类型为IQueryable,这意味着查询尚未<物>化到数据中,为了对数据库运行该查询,请调用:

var restuarantName = _db.Restaurant.SingleOrDefault(x => x.id = restaurantId);

答案 1 :(得分:0)

尝试

ViewBag.RestaurantName = restuarantName.ToList();

答案 2 :(得分:0)

您正在将查询设置为视图,未在执行查询。 尝试类似

var restuarantName = _db.Restaurant(x => x.id = restaurantId).SingleOrDefault();

假设您要查找一个值