In questo tip di programmazione C# con ADO.NET vediamo come verificare se, all'interno di un record di un DataTable, sono presenti determinati valori numerici.
In particolare, supponiamo di avere alcune colonne di tipo int e di voler verificare se, per un determinato record, tali colonne contengono un valore diverso da 0.
Di seguito un esempio:
C#
DataTable dttDatiGestione =
new DataTable();
dttDatiGestione.Columns.Add(new DataColumn("Numero", typeof(int)));
dttDatiGestione.Columns.Add(new DataColumn("Numero2", typeof(int)));
rigaNuova[0]
= 1;
rigaNuova[1]
= 4;
rigaNuova[2]
= 8;
dttDatiGestione.Rows.Add(rigaNuova);
bool trovatoElemento =
dttDatiGestione.AsEnumerable()
.Any(p =>
p.Field<int>("ID") == 1 &&
(p.Field<int?>("Numero") ?? 0) != 0 &&
(p.Field<int?>("Numero2") ?? 0) != 0
In questo caso, Any() restituisce true se esiste almeno una riga in cui:
la colonna ID contiene il valore 1;
la colonna Numero contiene un valore diverso da 0;
la colonna Numero2 contiene un valore diverso da 0.
L'utilizzo di Field<int?>() consente inoltre di gestire eventuali valori DBNull. Grazie all'operatore ?? 0, un eventuale valore NULL viene considerato equivalente a 0.
Nel nostro esempio, poiché Numero vale 4 e Numero2 vale 8, la variabile trovatoElemento assumerà il valore true.
Nessun commento:
Posta un commento