Volevo fare un altro post (dopo questo) su come l'introduzione di Linq ti permetta di fare operazioni complesse su collezioni (insiemi) di dati, in modo, a mio parere, più facile ed intuitivo.
In questo esempio devo aggregare un insieme di oggetti, denominati transazioni. Questi oggetti hanno un codice e una serie di abilitazioni rappresentate da variabili booleane. Le regole di aggregazione sono queste: devo estrarre transazioni distinte per codice, e fare l'unione delle abilitazioni di tutte le transazioni con lo stesso codice. Il tutto si traduce nella seguente query:
this._transactions = transactions.GroupBy(
transaction => transaction.Code,
(key, elements) =>
new Transaction()
{
Code = key,
CanRead = elements.Any(nt => nt.CanRead),
CanUpdate = elements.Any(nt => nt.CanUpdate),
CanCreate = elements.Any(nt => nt.CanCreate)
}).ToArray();
Ovviamente non voglio dire che non si potesse fare con un metodo "tradizionale".
Matteo