2013-05-16 24 views
1

我仍然是ASP.net MVC中的新手,並且在查詢時顯示數據時出現問題。如何將執行查詢的結果放入ViewData並傳遞給視圖

這裏是我跑的查詢控制器:

public ActionResult Create() 
{ 
    var Status = from s in _db.ReservationsStatus where s.defaultStatus == true select s.Id; 

    ViewData["Status"] = Status; 
    return View(); 
} 

我再從ViewData的,我認爲閱讀。然而,該輸出是:。

SELECT [Extent1] [ID] AS [ID] FROM [DBO] [更改爲r​​eservationStatus] AS [Extent1] WHERE 1 = [Extent1] [defaultStatus];

我想要的輸出是ID本身(執行查詢的結果)。

+0

你在視圖中用來顯示數據的代碼是什麼? –

+0

我使用了一個變量'var x = ViewData [「Status」]'然後@x –

+3

我想你需要強制對查詢進行評估(也許是'Status.First()'?) –

回答

3

您需要執行查詢。

public ActionResult Create() 
{ 
    var Status = (from s in _db.ReservationsStatus where s.defaultStatus == true select s.Id).First(); 

    ViewData["Status"] = Status; 
    return View(); 
} 
1

LINQ查詢以兩種模式執行 - 延遲和立即。在你提到的情況下,它是延遲執行,因此查詢被分配給var直到它被執行。當你開始遍歷結果時會發生這種情況。你可以通過調用First或count來強制查詢執行並返回一個值,從而使查詢執行不變。

+0

我也使用count方法的另一個原因和查詢工作,我只是缺乏關於Linq及其方法的知識。我不知道使用First()執行查詢。 –

相關問題