Estou testando o R# com o Visual Studio 2010. Estou trabalhando num exemplo de uma aplicação de ASP.Net MVC com IronRuby pro próximo post, que sai daqui a pouco, e olha a feliz surpresa. Eu tinha este código:

foreach (var itemParaCriar in criarPedido.ItensParaCriar)
{
    var produto = RepositorioProduto.ObterPorId(itemParaCriar.IdProduto);
    var itemPedido = new ItemPedido
                         {
                             Produto = produto,
                             Quantidade = itemParaCriar.Quantidade
                         };
    pedido.Adicionar(itemPedido);
} 

O R# sugeriu uma mudança, algo relacionado com o LINQ. Vejam o resultado:

foreach (var itemPedido in from itemParaCriar in criarPedido.ItensParaCriar
                           let produto = RepositorioProduto.ObterPorId(itemParaCriar.IdProduto)
                           select new ItemPedido
                                      {
                                          Produto = produto, Quantidade = itemParaCriar.Quantidade
                                      })
{
    pedido.Adicionar(itemPedido);
}

Chato né? Ele entendeu que podia trabalhar todo o corpo do foreach dentro de uma expressão LINQ.

A imagem abaixo mostra isso acontecendo (clique para ampliar):

Viva o Resharper! 

Eu já gostava do R#, agora então…

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.