我在我的应用程序中使用了一个DataTable
进行一些计算。我需要遍历除第一行以外的所有行。这是否可能?
类似这样:
DataTable dt;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
//do something...
}
LINQ是你的好朋友:
DataTable dt;
foreach (DataRow r in dt.Rows.Cast<DataRow>().Skip(1))
{
//do something...
}
这里需要调用Cast()
方法,因为DataTable.Rows
实现了非泛型的IEnumerable
接口,而LINQ扩展方法只能用于IEnumerable<T>
你还有另一个选择:
DataTable dt;
foreach (DataRow r in dt.AsEnumerable().Skip(1))
{
//do something...
}
好的,你已经得到了答案,但如果你不想使用Linq,则可以检查表格中行的索引:
foreach (DataRow row in m_dtMatrix.Rows)
{
if (m_dtMatrix.Rows.IndexOf(row) != 0)
{
...
}
}
DataTable dt;
bool isFirst = true;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
if( isFirst ) {
isFirst = false;
continue;
}
//do something...
}
Skip
接受要忽略的项目数量。 - NuffinDataTable.Rows
返回的是非泛型的IEnumerable
,所以为了使用 LINQ,需要调用Cast()
。我已经相应地更新了我的答案。 - Adi Lester