Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Usar linq List(T).Foreach(p => {})

É possível usar o foreach em uma lista na ViewBag? Tipo isso:

            <table>
            <thead>
                <tr>
                    <th>Id</th>
                    <th>Nome</th>
                    <th>Quantidade</th>
                </tr>
            </thead>
            <tbody>
                @ViewBag.Produtos.Foreach(p =>
                {
                    < tr >
                        < td > @p.Id </ td >
                        < td > @p.Nome </ td >
                        < td > @p.Quantidade </ td >
                    </ tr >
                }))
            </tbody>
        </table>
2 respostas
solução!

Olá Guilherme,

você até consegue usar o ForEach, mas o código é um pouco mais complicado e eu acho que não vale a pena. Primeiro, como é um método exclusivo de List e o ViewBag.Produtos perde a tipagem, você precisa fazer um cast. E no lambda você não consegue informar um código html como o @foreach, tendo que usar o método WriteLiteral para imprimir no html. O código ficaria assim para você ter uma noção:

<tbody>
    @{
        ((List<CaelumEstoque.Models.Produto>)ViewBag.Produtos).ForEach(p => {
            WriteLiteral("<ul>");
            WriteLiteral("<td>" + p.Id+ "</td>");
            WriteLiteral("<td>" + p.Nome+ "</td>");
            WriteLiteral("<td>" + p.Quantidade+ "</td>");
            WriteLiteral("</ul>");
        });
    }
</tbody>

Certo, parece que não vale a pena mesmo.

Muito obrigado pelo esclarecimento!