2013-01-12 47 views
4

我想發送到視圖IEnumerable並顯示其中的每個元素,但是當我發送它時出現問題。它說:如何在視圖中使用IGrouping處理IEnumerable?

{System.Linq.Enumerable.WhereSelectEnumerableIterator<System.Linq.IGrouping<string,MvcApplication4.Models.USER>,<>f__AnonymousType8<string,int>>} 

我不知道如何處理它。

這是我的看法:

@model IEnumerable<dynamic> 

我得到dynamic因爲我去的這個觀點從幾個功能是如何發送不同的類型。

<table border="1" style="text-align:center"> 
     <tr> 
      <td> </td> 
      <td> user name </td> 
      <td>age </td> 
      <td>comments </td> 
     </tr> 

     @foreach (var t in (Model)) 
     { 
     <tr>           
      <td>@(count++))</td> 
      <td> @Console.WriteLine(t)</td> 
      <td> </td> 
      <td> </td> 
     </tr>          
     } 

</table> 

我從這個LINQ得到IEnumerable

var allU = (from m in comList 
        join c in users on m.user equals c.user into cm1 
        from cm2 in cm1.DefaultIfEmpty() 
        group cm2 by m.user into grouped 
        select new { name = grouped.Key, count = grouped.Count() }).AsEnumerable(); 

所以我的問題是真的:我怎樣才能得到它在視圖中的元素?

回答

3

您不能在視圖中引用該類型,因爲它是匿名類型。取而代之的是,一個類型來存儲您的查詢的結果:

public class Result 
{ 
    public string Name { get; set; } 
    public int Count { get; set; } 
} 

然後更改您的查詢,伸入該類型:

var allU = (from m in comList 
        join c in users on m.user equals c.user into cm1 
        from cm2 in cm1.DefaultIfEmpty() 
        group cm2 by m.user into grouped 
        select new Result { Name = grouped.Key, Count = grouped.Count() }).AsEnumerable(); 

然後你就可以綁定到類型IEnumerable<Result>在你的看法。

+0

感謝它工作:) –

相關問題