Claudio mi ha anticipato di qualche ora.
Nel suo post spiega che LINQ non è solo un "linguaggio" (o dovremmo chiamarla sintassi?) per interrogare fonti dati è anche un ottimo strumento per scrivere codice più sintetico e più "parlante".
Io vorrei riprendere (questa è davvero l'ultima :-)) il discorso sui DTO.
Con LINQ molti dei discorsi fatti decadono, infatti non è più necessario scrivere classi ad-hoc per creare oggetti DTO (o oggetti Vista), LINQ permette di creare oggetti on-the-fly con la forma che ci serve per quel preciso contesto.
Riprendiamo il solito esempio Customer-Address in cui vogliamo mostrare a video un elenco di Customer con indirizzo completo, con LINQ non è necessario creare l'oggetto CustomerDTO ma è sufficiente scrivere queste poche righe di codice nella classe del service layer:
public IEnumerable GetCustomers()
{
IList<Customer> customers = LoadCustomerFromDB();
IEnumerable list = from c in customers
select new {
Name=c.Name,
FullAddress=(c.Address.Street + " " + c.Address.City) };
return list;
}
Questo metodo sfrutta gli anonymous type per creare un'oggetto con 2 proprietà (Name e FullAddress) senza che sia necessario creare appositamente il tipo.
DTO
Desgin
LINQ