Фильтрация DataSet

У меня есть DataSet, полный клиентов. Мне было интересно, есть ли способ фильтровать dataset и получать только ту информацию, которую я хочу. Например, чтобы получить CostumerName и CostumerAddress для клиента, который имеет CostumerID = 1

Является ли это возможным?

Вы можете использовать DataTable.Select :

 var strExpr = "CostumerID = 1 AND OrderCount > 2"; var strSort = "OrderCount DESC"; // Use the Select method to find all rows matching the filter. foundRows = ds.Table[0].Select(strExpr, strSort); 

Или вы можете использовать DataView :

 ds.Tables[0].DefaultView.RowFilter = strExpr; 

UPDATE Я не уверен, почему вы хотите вернуть DataSet. Но я бы пошел со следующим решением:

 var dv = ds.Tables[0].DefaultView; dv.RowFilter = strExpr; var newDS = new DataSet(); var newDT = dv.ToTable(); newDS.Tables.Add(newDT); 

Не упоминается о слиянии?

 DataSet newdataset = new DataSet(); newdataset.Merge( olddataset.Tables[0].Select( filterstring, sortstring )); 

Выше было очень близко. Вот мое решение:

 Private Sub getDsClone(ByRef inClone As DataSet, ByVal matchStr As String, ByRef outClone As DataSet) Dim i As Integer outClone = inClone.Clone Dim dv As DataView = inClone.Tables(0).DefaultView dv.RowFilter = matchStr Dim dt As New DataTable dt = dv.ToTable For i = 0 To dv.Count - 1 outClone.Tables(0).ImportRow(dv.Item(i).Row) Next End Sub 
Давайте будем гением компьютера.