2012-10-09 95 views
1

編程新手,我打算從asp.net MVC中使用c#的表中獲取一個單元格的值;在這裏我試圖:鑄造會話變量 - ViewBag MVC4 - 鑄造

DALEntities db = new DALEntities(); 
    var duration = db.MyTable.Where(c => c.Day == date && c.ID == id).Select(c => c.Duration); 
      Session["duration"] = duration; 

的數據得到我使用視圖,控制器: 變種臨時=會話[「持續時間」]; ViewBag.Duration = temp;

,並在視圖:

@ViewBag.Duration 

我得到

System.Data.Objects.ObjectQuery`1[System.String] 

我會感激你的建議。

回答

3

你可以在最後調用.First()急切地執行查詢,並得到一個結果符合這個標準:

var duration = db 
    .MyTable 
    .Where(c => c.Day == date && c.ID == id) 
    .Select(c => c.Duration) 
    .First(); 

不過要小心,因爲如果沒有記錄符合.Where()子句,.First()延伸方法會拋出異常。在這種情況下,您可以考慮使用.FirstOrDefault()方法。

我也非常強烈建議你學習basic LINQ之前學習實體框架和學習ASP.NET MVC大多之前。否則,你會在ASP.NET MVC中掙扎很多。我還建議人們單獨學習單獨的框架,而不要混合它們。一旦你熟悉它們,你可以混合一個項目。

+0

如果有多個結果,「First」不會拋出異常; 'Single'會。 –

+0

@DStanley,如果有0個匹配的記錄,'First'會拋出一個異常。如果有0個或多於1個匹配的記錄,Single'將拋出異常。感謝您指出了這一點。我已經更新了我的答案,因爲我錯誤地指出如果找到多條記錄,'First'將會拋出異常。 –

+0

謝謝Darin,它工作。我將檢查基本的LINQ。 – hncl