Come si può analizzare il valore int dalla cella DataRow?Analisi per int dalla cella DataRow
Int32.Parse(item["QuestionId"].ToString());
Questo codice funziona, ma sembra troppo prolisso. Inoltre è possibile gestire i valori DBNull?
Come si può analizzare il valore int dalla cella DataRow?Analisi per int dalla cella DataRow
Int32.Parse(item["QuestionId"].ToString());
Questo codice funziona, ma sembra troppo prolisso. Inoltre è possibile gestire i valori DBNull?
Se si sa che si tratta di un int
si dovrebbe solo lanci di conseguenza, questo è l'approccio più sicuro e più efficiente:
int questionId = item.Field<int>("QuestionId"); // similar to (int) item["QuestionId"]
Il metodo Field
supporta anche tipi nullable, quindi se potesse essere nullo:
int? questionId = item.Field<int?>("QuestionId");
if(questionId.HasValue) Console.Write(questionId.Value);
Se in realtà è un string
(perché?) si deve gettarlo ai string
e utilizzare int.Parse
:
int questionId = int.Parse(item.Field<string>("QuestionId"));
Se davvero non so che cosa è il tipo è, è possibile utilizzare System.Convert.ToInt32
:
int questionId = System.Convert.ToInt32(item["QuestionId"]);
.NET 2.0 non supporta, vero? –
@KhanhTO No, 'Field' è un metodo di estensione ed è stato aggiunto in 3.5 – sloth
@KhanhTO no, il metodo' Field
Se ciò che viene messo in quella cella è in realtà solo un int
, uso:
(int)item["QuestionId"]
Altrimenti, controllare il tipo di runtime del valore item["QuestionId"]
, ad esempio, se è un byte
, utilizzare (byte)item["QuestionId"]
. Se non sei sicuro, allora:
Convert.ToInt32(item["QuestionId"])
probabilmente funzionerà, ma è meno elegante.
@Wouter Huysentruit: verrà generata un'eccezione se è presente un valore NULL? –
Se 'null' non deve generare un'eccezione, si consideri' (int?) Item ["QuestionId"] '. –
Solo per essere sicuri: perché dici * parse *? Il tipo di 'QuestionId' è in realtà simile a una stringa, ad esempio' VARCHAR'? –
No, il tipo di QuestionId è int. Ma se fosse simile a una corda? – Anthony
È possibile utilizzare Int32.TryParse – Denis