2011-02-03 15 views
18

Verilerle dt2 adında bir DataTable sahibim. Belirli satırları almak için Select yöntemini arıyorum.DataTable.Select() sonucu yeni bir DataTable'a nasıl geçilir?

DataRow[] foundRows; 

expression = "parent_id=1"; 

foundRows = dt2.Select(expression); 

Nasıl yeni DataTable için Select kullanılan yöntem sonucu geçebilir - FilteredData demek?

cevap

50

türlerinde CopyToDataTable ürününü kullanabilirsiniz.

var filteredData = dt2.Select(expression).CopyToDataTable(); 
+2

Sadece neye bakıyordum bakıyordum – DontFretBrett

12

Neden bir DataView kullanmıyorsunuz?

DataView view = new DataView(dt2); 
view.RowFilter = "parent_id = 1"; 

DataView çok aynı şekilde davranacaktır bir DataTable olur yararı ile ki (bu durumda dt2) DataTable yatan otomatik DataView içinde yer alacak ve herhangi bir değişiklik (ler).

7

Netlik için, Select yöntemi, DataRow türünde bir dizi döndürür. Bu yüzden CopyToDataTable()'u kullanmamız gerek. Alex'in cevabı iyidir. Ancak, Select hiçbir satır döndürmediyse, CopyToDataTable() bir InvalidOperationException atar.

CopyToDataTable()'u kullanmadan önce en az bir DataRow olduğunu test edin.

var filteredDataRows = dt2.Select(expression); 

var filteredDataTable = new DataTable(); 

if(filteredDataRows.Length != 0) 
    filteredDataTable = filteredDataRows.CopyToDataTable(); 
İlgili konular