2015-05-12 205 views
-4

我想查詢數據庫並顯示結果。這是我的代碼:爲什麼數據庫查詢看起來像這樣?

[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 

這是什麼意思?

回答

4

Result變量包含一個LINQ查詢 - 不是一個字符串。既然你意味着你要顯示一個消息,你需要得到的第一個結果 - 而不是查詢本身:

ViewBag.Message = Result.FirstOrDefault(); 

然而,這假設你真正想要的ViewBag.MessageClientName數據庫的價值列(這又是一樣的message,我懷疑是不是你真正想要的...

要回答你原來的問題:

你看到的是調用ToString()上的結果一個DbQuery<T>,它爲您提供用於獲取所需數據的SQL查詢。

+0

謝謝,我現在明白了。你有權利,當我使用FirstOrDefault時,它再次回答一些奇怪的事情,但只有當我搜索現有的ClientName時纔回答。 – pucek7

0

該查詢只有在循環時纔會執行。所以,你需要調用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(); 
    } 
+2

這將打印「System.Collections.Generic.List'[Client]」。 – CodeCaster

+0

You'll需要一個列表,而不是第一個元素列表本身 – HimBromBeere

+0

當我服用第一要素,我有類似的東西: System.Data.Entity.DynamicProxies.Client_02A0BB155C71D9541E0B7869114C4906EB16FF7D51481C04B389528738517799 這意味着,我有不好的SQL命令? – pucek7

相關問題