Satırları Bulma
ve FindRows yöntemlerini DataViewkullanarak satırları sıralama anahtarı değerlerine Find göre arayabilirsiniz. Find ve FindRows yöntemlerindeki arama değerlerinin büyük/küçük harf duyarlılığı, temel alınan DataTableöğesinin CaseSensitive özelliği tarafından belirlenir. Sonuç döndürmek için arama değerlerinin var olan sıralama anahtarı değerleriyle tamamen eşleşmesi gerekir.
Find yöntemi, arama ölçütleriyle eşleşen dizinine DataRowView sahip bir tamsayı döndürür. Arama ölçütleri ile birden fazla satır eşleşiyorsa, yalnızca eşleşen ilk DataRowView dizini döndürülür. Eşleşme bulunmazsa, Bul işlevi -1 döndürür.
Birden çok satırla eşleşen arama sonuçlarını döndürmek için FindRows yöntemini kullanın. FindRows, Find yöntemi gibi çalışır ancak DataView'daki tüm eşleşen satırlara başvuran bir DataRowView dizisi döndürür. Eşleşme bulunmazsa DataRowView dizisi boş olur.
Find veya FindRows yöntemlerini kullanmak için ApplyDefaultSort değerini true olarak ayarlayarak veya Sort özelliğini kullanarak bir sıralama düzeni belirtmeniz gerekir. Sıralama düzeni belirtilmezse, bir özel durum oluşturulur.
Find ve FindRows yöntemleri, uzunluğu sıralama düzenindeki sütun sayısıyla eşleşen bir değer dizisini giriş olarak alır. Tek bir sütunda sıralama söz konusu olduğunda, tek bir değer geçirebilirsiniz. Birden çok sütun içeren sıralama düzenleri için bir nesne dizisi geçirirsiniz. Birden çok sütuna göre sıralama için nesne dizisindeki değerlerin DataView'un Sort özelliğinde belirtilen sütunların sırasıyla eşleşmesi gerektiğini unutmayın.
Aşağıdaki kod örneği, tek sütunlu sıralama düzenine sahip bir DataView'da çağrılan Find yöntemini gösterir.
Dim custView As DataView = _
New DataView(custDS.Tables("Customers"), "", _
"CompanyName", DataViewRowState.CurrentRows)
Dim rowIndex As Integer = custView.Find("The Cracker Box")
If rowIndex = -1 Then
Console.WriteLine("No match found.")
Else
Console.WriteLine("{0}, {1}", _
custView(rowIndex)("CustomerID").ToString(), _
custView(rowIndex)("CompanyName").ToString())
End If
DataView custView = new DataView(custDS.Tables["Customers"], "",
"CompanyName", DataViewRowState.CurrentRows);
int rowIndex = custView.Find("The Cracker Box");
if (rowIndex == -1)
Console.WriteLine("No match found.");
else
Console.WriteLine("{0}, {1}",
custView[rowIndex]["CustomerID"].ToString(),
custView[rowIndex]["CompanyName"].ToString());
Sort özelliğiniz birden çok sütun belirtiyorsa, aşağıdaki kod örneğinde olduğu gibi, sıralama özelliği tarafından belirtilen sırayla her sütun için arama değerlerini içeren bir nesne dizisi geçirmeniz gerekir.
Dim custView As DataView = _
New DataView(custDS.Tables("Customers"), "", _
"CompanyName, ContactName", _
DataViewRowState.CurrentRows)
Dim foundRows() As DataRowView = _
custView.FindRows(New object() {"The Cracker Box", "Liu Wong"})
If foundRows.Length = 0 Then
Console.WriteLine("No match found.")
Else
Dim myDRV As DataRowView
For Each myDRV In foundRows
Console.WriteLine("{0}, {1}", _
myDRV("CompanyName").ToString(), myDRV("ContactName").ToString())
Next
End If
DataView custView = new DataView(custDS.Tables["Customers"], "",
"CompanyName, ContactName",
DataViewRowState.CurrentRows);
DataRowView[] foundRows =
custView.FindRows(new object[] {"The Cracker Box", "Liu Wong"});
if (foundRows.Length == 0)
Console.WriteLine("No match found.");
else
foreach (DataRowView myDRV in foundRows)
Console.WriteLine("{0}, {1}", myDRV["CompanyName"].ToString(),
myDRV["ContactName"].ToString());