Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, Find sınıfının FindRows ve DataView yöntemlerini kullanmanın ve bir Web uygulamasında bir DataView'ü önbelleğe almanın performans avantajlarını tartışır.
Bul ve Satırları Bul
DataView bir dizin oluşturur. Dizin, bir tablo veya görünümdeki bir veya birden çok sütundan oluşturulan anahtarları içerir. Bu anahtarlar, anahtar değerleriyle ilişkili satır veya satırları hızlı ve verimli bir şekilde bulmasını sağlayan DataView bir yapıda depolanır. Filtreleme ve sıralama gibi dizini kullanan işlemler önemli performans artışları görür. DataView için dizin, DataView oluşturulduğunda ve sıralama veya filtreleme bilgilerinden herhangi biri değiştirildiğinde oluşturulur. DataView oluşturmak ve sıralama veya filtreleme bilgilerini daha sonra ayarlamak, dizinin en az iki kez oluşturulmasına neden olur: bir kez DataView oluşturulduğunda ve bir kez sıralama veya filtre özelliklerinden herhangi biri değiştirildiğinde. ile DataViewfiltreleme ve sıralama hakkında daha fazla bilgi için bkz. DataView ile filtreleme ve DataView ile Sıralama.
Belirli bir veri sorgusunun sonuçlarını döndürmek istiyorsanız, verilerin bir alt kümesinin dinamik görünümünü sağlamanın yerine, Find özelliğini ayarlamak yerine FindRowsDataView veya RowFilter yöntemlerini kullanabilirsiniz. RowFilter özelliği en iyi şekilde, bağlı denetimin filtrelenmiş sonuçları görüntülediği veriye bağlı bir uygulamada kullanılır. özelliğinin RowFilter ayarlanması verilerin dizinini yeniden oluşturur, uygulamanıza ek yük ekler ve performansı azaltır. Find ve FindRows yöntemleri, dizinin yeniden oluşturulmasına gerek kalmadan geçerli dizini kullanır. Eğer Find veya FindRows yalnızca bir kez arayacaksanız, o zaman mevcut DataView öğesini kullanmanız gerekir. Eğer Find veya FindRows birden çok kez çağıracaksanız, aramak istediğiniz sütunda dizini yeniden oluşturmak için yeni bir DataView oluşturmalı ve ardından Find veya FindRows yöntemlerini çağırmalısınız. Daha fazla bilgi için Find ve FindRows yöntemlerine bakın, Satırları Bulma bölümüne bakın.
Aşağıdaki örnek, Find "Zhu" soyadına sahip bir kişiyi bulmak için yöntemini kullanır.
DataTable contacts = _dataSet.Tables["Contact"];
EnumerableRowCollection<DataRow> query = from contact in contacts.AsEnumerable()
orderby contact.Field<string>("LastName")
select contact;
DataView view = query.AsDataView();
// Find a contact with the last name of Zhu.
var found = view.Find("Zhu");
Dim contacts As DataTable = dataSet.Tables("Contact")
Dim query = _
From contact In contacts.AsEnumerable() _
Order By contact.Field(Of String)("LastName") _
Select contact
Dim view As DataView = query.AsDataView()
Dim found As Integer = view.Find("Zhu")
Aşağıdaki örnek, tüm kırmızı renkli ürünleri bulmak için yöntemini kullanır FindRows .
DataTable products = _dataSet.Tables["Product"];
EnumerableRowCollection<DataRow> query = from product in products.AsEnumerable()
orderby product.Field<decimal>("ListPrice"), product.Field<string>("Color")
select product;
DataView view = query.AsDataView();
view.Sort = "Color";
var criteria = new object[] { "Red" };
DataRowView[] foundRowsView = view.FindRows(criteria);
Dim products As DataTable = dataSet.Tables("Product")
Dim query = _
From product In products.AsEnumerable() _
Order By product.Field(Of Decimal)("ListPrice"), product.Field(Of String)("Color") _
Select product
Dim view As DataView = query.AsDataView()
view.Sort = "Color"
Dim criteria As Object() = New Object() {"Red"}
Dim foundRowsView As DataRowView() = view.FindRows(criteria)
ASP.NET
ASP.NET, bellekte oluşturmak için kapsamlı sunucu kaynakları gerektiren nesneleri depolamanıza olanak tanıyan bir önbelleğe alma mekanizması vardır. Bu tür kaynakları önbelleğe almak uygulamanızın performansını önemli ölçüde artırabilir. Önbelleğe alma, her uygulama için özel olan önbellek örnekleriyle sınıf tarafından Cache uygulanır. Yeni DataView nesne oluşturma işlemi yoğun kaynak kullanımına neden olabileceğinden, Web sayfası her yenilendiğinde yeniden oluşturulması gerekmemesi için bu önbelleğe alma işlevini Web uygulamalarında DataView kullanmak isteyebilirsiniz.
Aşağıdaki örnekte, DataView sayfa yenilendiğinde verilerin yeniden sıralanması gerekmemesi için önbelleğe alınır.
If (Cache("ordersView") = Nothing) Then
Dim dataSet As New DataSet()
FillDataSet(dataSet)
Dim orders As DataTable = dataSet.Tables("SalesOrderHeader")
Dim query = _
From order In orders.AsEnumerable() _
Where order.Field(Of Boolean)("OnlineOrderFlag") = True _
Order By order.Field(Of Decimal)("TotalDue") _
Select order
Dim view As DataView = query.AsDataView()
Cache.Insert("ordersView", view)
End If
Dim ordersView = CType(Cache("ordersView"), DataView)
GridView1.DataSource = ordersView
GridView1.DataBind()
if (Cache["ordersView"] == null)
{
// Fill the DataSet.
DataSet dataSet = FillDataSet();
DataTable orders = dataSet.Tables["SalesOrderHeader"];
EnumerableRowCollection<DataRow> query =
from order in orders.AsEnumerable()
where order.Field<bool>("OnlineOrderFlag") == true
orderby order.Field<decimal>("TotalDue")
select order;
DataView view = query.AsDataView();
Cache.Insert("ordersView", view);
}
DataView ordersView = (DataView)Cache["ordersView"];
GridView1.DataSource = ordersView;
GridView1.DataBind();