Wie Wert int könnte von DataRow Zelle analysiert werden?Parsing int von DataRow Zelle
Int32.Parse(item["QuestionId"].ToString());
Dieser Code funktioniert, aber es sieht zu ausführlich aus. Auch ist es möglich, DBNull Werte zu handhaben?
Wie Wert int könnte von DataRow Zelle analysiert werden?Parsing int von DataRow Zelle
Int32.Parse(item["QuestionId"].ToString());
Dieser Code funktioniert, aber es sieht zu ausführlich aus. Auch ist es möglich, DBNull Werte zu handhaben?
Wenn Sie wissen, dass es ein int
ist, sollten Sie es nur entsprechend werfen, das ist die sicherste und effizienteste Ansatz:
int questionId = item.Field<int>("QuestionId"); // similar to (int) item["QuestionId"]
Die Field
Methode unterstützt auch Nullable-Typen, also wenn es null sein könnte:
int? questionId = item.Field<int?>("QuestionId");
if(questionId.HasValue) Console.Write(questionId.Value);
Wenn es ein wirklich string
(warum?) Sie haben es zu string
werfen und verwenden int.Parse
:
int questionId = int.Parse(item.Field<string>("QuestionId"));
Wenn Sie nicht wirklich wissen, was es Art ist, können Sie System.Convert.ToInt32
verwenden:
int questionId = System.Convert.ToInt32(item["QuestionId"]);
.NET 2.0 wird nicht unterstützt, oder? –
@KhanhTO Nein, 'Feld' ist eine Erweiterungsmethode und wurde in 3.5 – sloth
@KhanhTO hinzugefügt Nein, die' Feld
Wenn in diese Zelle gesetzt wird eigentlich ist, was nur ein int
, zu verwenden:
(int)item["QuestionId"]
Andernfalls überprüfen sie den Laufzeittyp des Wertes item["QuestionId"]
, wenn es ein byte
zum Beispiel, verwenden (byte)item["QuestionId"]
. Wenn Sie nicht sicher sind, dann:
wird wahrscheinlich funktionieren, aber das ist weniger elegant.
@Wouter Huysentruit: Wird eine Ausnahme ausgelöst, wenn ein NULL-Wert vorhanden ist? –
Wenn 'null' keine Ausnahme auslösen darf, beachte '(int?) Item [" QuestionId "]'. –
Nur sicher sein: Warum sagen Sie * Parse *? Ist der Typ von 'QuestionId' tatsächlich String-ähnlich, zum Beispiel' VARCHAR'? –
Nein, ist die Art der QuestionID int. Aber was wäre, wenn es stringartig wäre? – Anthony
Sie können Int32.TryParse – Denis