Как обрабатывать 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>
по вашему мнению.