在DataView中循环遍历行
DataView
对象没有DataTable
类的Rows
属性。
如何循环访问DataView的行?
DataView对象本身用于遍历DataView行。
DataView行由DataRowView对象表示。 DataRowView.Row属性提供对原始DataTable行的访问。
C#
foreach (DataRowView rowView in dataView) { DataRow row = rowView.Row; // Do something // }
VB.NET
For Each rowView As DataRowView in dataView Dim row As DataRow = rowView.Row ' Do something ' Next
//你可以将DataView转换成Table。 使用DataView.ToTable();
foreach (DataRow drGroup in dtGroups.Rows) { dtForms.DefaultView.RowFilter = "ParentFormID='" + drGroup["FormId"].ToString() + "'"; if (dtForms.DefaultView.Count > 0) { foreach (DataRow drForm in dtForms.DefaultView.ToTable().Rows) { drNew = dtNew.NewRow(); drNew["FormId"] = drForm["FormId"]; drNew["FormCaption"] = drForm["FormCaption"]; drNew["GroupName"] = drGroup["GroupName"]; dtNew.Rows.Add(drNew); } } }
//或者你可以使用
// 2。
dtForms.DefaultView.RowFilter = "ParentFormID='" + drGroup["FormId"].ToString() + "'"; DataTable DTFormFilter = dtForms.DefaultView.ToTable(); foreach (DataRow drFormFilter in DTFormFilter.Rows) { //Your logic goes here }
我更喜欢以更直接的方式来做。 它没有行,但仍然有行的数组。
tblCrm.DefaultView.RowFilter = "customertype = 'new'"; qtytotal = 0; for (int i = 0; i < tblCrm.DefaultView.Count; i++) { result = double.TryParse(tblCrm.DefaultView[i]["qty"].ToString(), out num); if (result == false) num = 0; qtytotal = qtytotal + num; } labQty.Text = qtytotal.ToString();