2014-12-05 26 views
0

我正在編寫一個ASP .NET MVC網站,我有一個LINQ問題。我有一個簡單的類「Group by」使用LINQ和動態響應類型

public class Tag 
{ 
    public int TagId { get; set; } 
    public string Nome { get; set; } 
    ... [other props].... 

} 

而且我想傳遞到視圖的分組Nomes的列表。我想下面的LINQ代碼來生成一個列表

var teste = (from t in db.Tags 
        group t by t.Nome into g 
        select new 
        { 
         Nome = g.Key 
        }).ToList(); 
ViewBag.ListaTags = teste; 

和it's OK,但如果我在查看

@foreach (var item in ViewBag.ListaTags) 
{ 
    @item.Nome 
} 

使用下面的代碼我得到一個錯誤信息說,對象項目沒有Nome屬性。如果我嘗試@item而不是@ item.Nome,它會顯示{Nome =「Test」}。這就像我有一個對象,但我不能訪問它的屬性。

+1

你試過'@item [ 「?諾姆']' – artm 2014-12-05 02:50:33

+0

是的,我想鴕鳥政策工作,要麼 – 2014-12-05 14:43:05

回答

0

請看看這個馬rc's answer。而不是返回匿名類型的,你可以decalre一個POCO類,並返回一個對象是這樣的: -

var teste = (from t in db.Tags 
         group t by t.Nome into g 
         select new Nome 
         { 
          groupedNome = g.Key 
         }).ToList(); 
我在這裏使用

POCO類是: -

public class Nome 
{ 
    public string groupedNome { get; set; } 
} 

然後,您可以使用此在View爲: -

@foreach (var item in ViewBag.ListaTags) 
{ 
    @item.groupedNome 
} 
+1

非常感謝,它工作正常! = d – 2014-12-05 14:54:02

0

分組你有像::

Group.key1=> [value1,value2,value3], 
Group.key2=> [value1,value2,value3], 
Group.key3=> [value1,value2,value3] 

格式分組數據的結構後,如果你想顯示歸類的東西,那麼你應該選擇亦自值與其主要爲::

var teste = (from t in db.Tags 
        group t by t.Nome into g 
        select new 
        { 
         Nome = g.Key, 
         Id=g 
        }).ToList(); 

然後你就可以顯示它在客戶端爲::

@foreach (var item in ViewBag.ListaTags) 
{ 
    <p>@item.Key </p> 
    foreach (var subitem in item.Values) 
    { 
     @subitem  
    } 

} 
+0

嗨@Rahul我得到一個錯誤信息,一些臨客。」對象確實不包含鍵(和值)的定義。謝謝! – 2014-12-05 14:50:36