Как обрабатывать 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>

Я получаю IEnumerable из этого linq:

 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();

Таким образом, мой вопрос действительно: как я могу получить элементы этого в представлении?

1 ответ

Решение

Вы не можете ссылаться на тип в вашем представлении, потому что это анонимный тип. Вместо этого определите тип для хранения результатов вашего запроса:

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> по вашему мнению.

Другие вопросы по тегам