var valor = from obj in listaobjects
select obj;
Este exemplo acima retorna os itens da listaobjects, sem alterar nenhuma propriedade.
Agora, digamos que se quisesse setar a propriedade Nome do objeto, antes de retornar.
Via sintaxe em Extension Methods:
var valor = listaObjects.Select(x => x.Nome = "teste"; return x;};
Na sintaxe declarativa, pode-se fazê-lo via a (horrorosa) instrução abaixo:
var valor = from obj in listaObjects
select new itemRetorno{ Nome = "Teste", Endereco = obj.Endereco, ...};
Mas uma saída bem mais elegante seria a criação de um Extension Method baseado em um delegate, como o exemplo abaixo:
namespace System.Linq
{
public static class ExtensaoLinq
{
public delegate void Atualiza
public static T Set
{
atualizador(input);
return input;
}
}
}
Então, com isto, podemos escrever em sintaxe declarativa:
var valor = from obj in listaObjects
select obj.Set(obj => { obj.Nome = "Teste"; });