2010-01-16 14 views
7

DataColumn değerlerini bir dizi dizeye dönüştürürken en iyi yöntem?DataColumn değerlerini bir dizi dizeye dönüştürürken en iyi yöntem nedir?

tüm DataTable satırlar için belirli DataColumn için

[Düzenleme] Tüm değerler dizgenin bir dizi dönüştürülmesini ?

+2

Şunları belirtebilir misiniz? Herhangi bir Datarow, sizin için tanımlanan sütunlarla aynı sırada bir nesne dizisi geri veren ItemArray özelliğine sahiptir. Nesneleri dizelere dönüştürmek, her değerindeki ToString() öğesini çağırmak kadar kolay olurdu, ancak belki de istediğiniz başka bir şey olabilir ... – flq

+0

DataColumn'un bir dizi dizeye dönüştürülecek değerleri, ancak en iyi şekilde arıyorum Bunu uygulamak için yöntem. – Ahmed

cevap

17

ve tüm değerlerini döndürür -

http://msdn.microsoft.com/en-us/library/system.data.datatableextensions.aspx

Ve DataRowExtensions sınıfı - Sen DataTableExtensions sınıfını kontrol etmelidir dizi dizisi.

bu yaklaşımları deneyin:

int columnIndex = 2; // desired column index 

// for loop approach   
string[] results = new string[dt.Rows.Count]; 
for (int index = 0; index < dt.Rows.Count; index++) 
{ 
    results[index] = dt.Rows[index][columnIndex].ToString(); 
} 

// LINQ 
var result = dt.Rows.Cast<DataRow>() 
        .Select(row => row[columnIndex].ToString()) 
        .ToArray(); 

yerine columnName ile columnIndex yerini alabilir, örneğin:

string columnName = "OrderId";" 

EDIT: özel olarak ama durumda bir dize dizisi için sordunuz İlk örnekte for döngüsünden önce dizi uzunluğunu belirlemeyi ve sadece ite eklemeyi önlemek için List<string>'u tercih ederim. ms. Bunun yerine bir foreach döngüsünü kullanmak için de iyi bir fırsat.

şöyle Sonra kodu yeniden olacaktır:

List<string> list = new List<string>(); 
foreach (DataRow row in dt.Rows) 
{ 
    list.Add(row[columnIndex].ToString()); 
} 
1

DataRow.ItemArray Mülkiyet - Ayrıca

http://msdn.microsoft.com/en-us/library/system.data.datarow.itemarray.aspx

, hangi sürümünü kullanıyorsunuz? Ben Hedefinizi anlasalardı belirli bir sütun belirtmek istiyoruz

http://msdn.microsoft.com/en-us/library/system.data.datarowextensions.aspx

+0

'DataRow.ItemArray', bir satırdaki tüm değerleri bir dizi olarak döndürür. Bence OP, bir sütundaki tüm değerleri bir dizi olarak istiyor. Belki de DataRow.ItemArray' ve 'DataTableExtensions' sınıfının nasıl yardımcı olabileceğini açıklamak için cevabınızı genişletebilirsiniz. – Ben

0

Bu soru eski biliyorum ama benzer bir şey yapmaya çalışıyor benim Google aramasında buldum. Veritabanımın belirli bir satırında bulunan tüm değerlerden bir liste oluşturmak istedim. Aşağıdaki kod örneğimde, Visual Studio'daki GUI sihirbazlarını kullanarak projeme bir SQL veri kaynağı ekledim ve gerekli tablo bağdaştırıcısını tasarımcıya bıraktım.

'Create a private DataTable 
Private authTable As New qmgmtDataSet.AuthoritiesDataTable 

'Fill the private table using the table adapter 
Me.AuthoritiesTableAdapter1.Fill(Me.authTable) 

'Make the list of values 
Dim authNames As List(Of String) = New List(Of String)(From value As qmgmtDataSet.AuthoritiesRow In Me.authTable.Rows Select names.authName) 
İlgili konular