2010-04-07 20 views
5

Benim C# kodu şuna benzer:Bu sütun değerini bir tam sayıya nasıl dönüştürebilirim?

myNum = dt.Columns[0]; 

myNum bir tam sayıdır ve dt bir datatable olduğunu. Dt sütun 0'daki değer bir dizgidir ("12"), ancak onu bir tamsayıya dönüştürmek istiyorum. Bunu nasıl yapabilirim?

myNum = int.Parse(dt.Columns[0]); 

... ama bu işe yaramazsa: denedim. Herhangi bir fikir?

+3

"ama bu çalışmıyor" olacak? – Lazarus

+0

neden çalışmıyor? bir istisna atar? – PierrOz

+0

Elbette! Int.Parse'i kullanmaya çalıştığımda editör (Visual Studio) şikayet ediyor. "Int.Parse (string)" için en iyi aşırı yüklenmiş yöntem eşleştirmesinin bazı geçersiz argümanlara sahip olduğunu "söylüyor. – Kevin

cevap

25

Değerler satırlar halinde değil sütunlarda depolanır. Bu yolu deneyin: Eğer tiplerinin çeşitli uğraşan örneğin çiftler (1.0) ise

myNum = int.Parse(dt.Rows[0][0].ToString()); 
+0

Awesome! Bu yaptı. – Kevin

+0

Değer her zaman bir int olduğundan emin olmadıkça int.TryParse (..) kullanmak daha iyi olur. –

+0

Evet, eminim ki değer her zaman bir int olacaktır. Sütun bir dize olduğundan, TryParse için – Kevin

0
Convert.ToInt32(dt.Rows[0][0]) 

yukarıda, daha iyi olurdu. Ayrıştırma bir özel durum ise

3

bu dt.Columns [0] olarak geçerli bir giriş olmadığı anlamına gelir. BTW, Darin doğru olmalı: değeriniz bir sütunda saklanmaz ama istisna önlemek istiyorsanız, dönüşüm yapıldığını veya olmasın başarıyla

DÜZENLEME eğer bir boolean anlatmaya döndüren int.TryParse kullanabilirsiniz ayrıştırma yöntemi bir dize alır ve veri basit bir nesne olarak geri gelir çünkü bir hücrenin

+0

+1. –

6

Your ayrıştırma çalışma değildi.

Ayrıca veri sıralar halinde, yani (Ben ilk tercih), gerçekten iki seçenek vardır:

// This converts the object directly to an integer 
myNum = Convert.ToInt32(dt.Rows[0][0]); 

// This converts the object to a string, and then parses it into an integer 
myNum = int.Parse(dt.Rows[0][0].ToString()); 
+0

Boşlukları test etmeniz gerekebilir veya olmayabilir. – SeaDrive

1

Kullanım TryParse yöntemini Değerini ayrıştırmak için:

int myNum = 0; 
int.TryParse(dt.rows[0][0].ToString() , out myNum); 

ile bir hata oluşursa kodunun üzerinde, değişkenin değeri ... daha spesifik olabilir sıfır

İlgili konular