为什么数据库查询看起来像这样



我想查询数据库并显示结果。这是我的代码:

[HttpGet]
public ActionResult Index(string message)
{
    var Result = from Client in db.Clients
                   where Clients.ClientName == message
                   select Clients.ClientName;
    ViewBag.Message = Result;
    getCurrentUser();
    return View();
}

从输入元素中获取消息是可变的。我想在视图中使用ViewBag.Message显示它。在页面上,我看到了:

SELECT [Extent1].[ClientId] AS [ClientId], [Extent1].[ClientName] AS [ClientName] FROM [dbo].[Clients] AS [Extent1] WHERE [Extent1].[ClientName] = @p__linq__0

这是什么意思?

Result变量包含linq查询 - 而不是字符串。由于您暗示要显示一条消息,因此需要获得第一个结果 - 而不是查询本身:

ViewBag.Message = Result.FirstOrDefault();

但是,这实际上是您实际上希望ViewBag.MessageClientName数据库列的值(依次与message相同)...

回答您的原始问题:

您看到的是在DbQuery<T>上调用ToString()的结果,该结果为您提供了用于获取所需数据的SQL查询。

循环循环后,查询将仅执行。因此,您需要调用result.tolist()实际获取值

[HttpGet]
    public ActionResult Index(string message)
    {
        var Result = from Client in db.Clients
                       where Clients.ClientName == message
                       select Clients.ClientName;
        ViewBag.Message = Result.ToList();
        getCurrentUser();
        return View();
    }

最新更新