我有一个看起来像这样的数据集:
| A | B | C | D | E | F | G | H | I | ... | Z | -------------------------------------------------- | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 26 | |11 |22 |33 |44 |55 |66 |77 |88 |99 | ... | 2626 | |111|222|333|444|555|666|777|888|999| ... |262626|
价值观无关。我只有很多专栏。
我想遍历特定列的所有行。
是否可以不遍历所有列?因为现在我唯一能想到的就是这个(假设我想要D列的所有行)
C#
foreach(DataRow row in myDataSet.Tables(0).Rows) if(row.Column == myDataSet.Tables(0).Columns("D")) MessageBox.Show("I'm in Column B");
VB
For Each row As DataRow In myDataSet.Tables(0).Rows If row.Column Is myDataSet.Tables(0).Columns("D") Then MessageBox.Show("I'm in Column B") End If Next
但这会遍历所有列。我想使用类似的集合,
myDataSet.Tables(0).Columns("D").Rows
但它不存在。
DataRow
有一个可以使用的索引器:
foreach(DataRow row in myDataSet.Tables[0].Rows) Console.WriteLine("I'm in Column B: " + row["D"]);
您可以通过字段的名称或顺序索引来访问它。在第三个重载,如果你有一个参考,可以使用 DataColumn
和使用于其他列后发现。如果您不想“搜索”该列(尽管可以忽略不计),请使用以下方法:
DataColumn col = myDataSet.Tables[0].Columns["D"]; foreach(DataRow row in myDataSet.Tables[0].Rows) Console.WriteLine("I'm in Column B: " + row[col]);
但是您也可以使用Linq,例如,如果您想对此列中的所有值求和:
int dTotal = myDataSet.Tables[0].AsEnumerable().Sum(r => r.Field("D"));