我正在使用DataTable
進行一些計算。我需要通過除第一個以外的所有行進行迭代。可能嗎?DataTable - foreach Row,EXCEPT FIRST ONE
喜歡的東西:
DataTable dt;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
//do something...
}
我正在使用DataTable
進行一些計算。我需要通過除第一個以外的所有行進行迭代。可能嗎?DataTable - foreach Row,EXCEPT FIRST ONE
喜歡的東西:
DataTable dt;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
//do something...
}
好吧,你有你的答案,但如果你不想使用LINQ。檢查行的索引表中:
foreach (DataRow row in m_dtMatrix.Rows)
{
if (m_dtMatrix.Rows.IndexOf(row) != 0)
{
...
}
}
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...
}
謝謝:)無法找到正確的語法,它 – user1080533 2012-01-13 15:28:12
哦,只有一件事......應該有不.Skip(0)? – user1080533 2012-01-13 15:29:28
不,不應該,因爲'Skip'需要忽略項目的數量。 – Nuffin 2012-01-13 15:30:59
這裏有一個快速和骯髒的
DataTable dt;
bool isFirst = true;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
if(isFirst) {
isFirst = false;
continue;
}
//do something...
}
該死的萊斯特,現在我看起來像一個菜鳥。 – Matthew 2012-01-13 15:28:21
你也應該小心因爲我認爲「第一」行取決於你的數據表的排序定義。 – 2012-01-13 15:39:10
最後決定不用LINQ去,所以我用你的答案。謝謝大家的迴應。 – user1080533 2012-01-14 12:49:08