2010-08-01 114 views
0

我試圖讓我的數據庫中的所有區域的列表:無法應用foreach?

public ActionResult Index() 
{ 
    var carreras = repo.FindAllCarreras().ToList(); 
    AreaRepository area = new AreaRepository(); 
    ViewData["Areas"] = area.FindAllAreas(); //Return IQueryable<> 
    return View("Index", carreras); 
} 

並在視圖:

<% foreach (var area in ViewData["Areas"]) 
     { %> 
      <p><%: area %></p> 
    <% } %> 

我得到一個錯誤:

foreach statement cannot operate on variables of type 'object' because 'object' does not contain a public definition for 'GetEnumerator'

我想最佳路徑是修改CarreraController中的查詢並創建一個返回所有名稱並將其保存到簡單List<string>的linq查詢。

我該如何做到這一點?

ViewData["Areas"] = area.FindAllAreas().Select(???? 

回答

2

ViewData是從字符串到對象的字典。所以你基本上是做

object o = ViewData["Areas"]; 
foreach(var area in o) 
... 

只需使用一投:

foreach(var area in (WhateverYourCollectionTypeIs)ViewData["Areas"]) 
0

鑄計算機[「區」]以(IEnumerable<AREATYPE>)ViewData["Areas"]

+0

我不知道我應該鑄造。 Area是一個數據庫表,並使用Linq-to-SQL作爲ORM。 IEnumarable類型應該是什麼? :\ – 2010-08-01 23:02:43

+0

@Sergio與您從'FindAllAreas'中獲得'IQueryable <>'的類型相同。 – 2010-08-01 23:06:33

+0

@Sergio Tapia無論由FindAllAreas()方法返回什麼。可能類似於「區域」。 – Necros 2010-08-01 23:07:07