首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询返回查询,而不是结果。

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

Stack Overflow用户
提问于 2018-10-08 11:43:28
回答 3查看 56关注 0票数 0

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

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

控制器

代码语言:javascript
运行
复制
[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();
}

然而,我得到的结果是:

代码语言:javascript
运行
复制
"New Review for SELECT [EXTENT1].[NAME] AS [NAME] FROM [DBO].[RESTAURANT] AS [EXTENT1] WHERE [EXTENT1].[ID] = @P__LINQ__0".

鉴于以下各点:

代码语言:javascript
运行
复制
@ViewBag.RestaurantName

我在LinqPad中检查了查询,它成功地返回了一个名称,为什么这看起来没有执行呢?

返流模型

代码语言:javascript
运行
复制
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; }
}

DB上下文

代码语言:javascript
运行
复制
public DbSet<Restaurant> Restaurant { get; set; }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-10-08 11:50:41

restuarantName类型为IQueryable,意思是查询尚未物化为数据,为了对数据库运行查询,请调用:

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

票数 2
EN

Stack Overflow用户

发布于 2018-10-08 11:47:09

试一试

代码语言:javascript
运行
复制
ViewBag.RestaurantName = restuarantName.ToList();
票数 0
EN

Stack Overflow用户

发布于 2018-10-08 11:47:14

如果将查询设置为视图,则不会执行查询。试着做些像

代码语言:javascript
运行
复制
var restuarantName = _db.Restaurant(x => x.id = restaurantId).SingleOrDefault();

假设您正在寻找单个值

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52701509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档