私のアプリでは、一部の計算に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...
}
もOKですが、場合には、あなたは、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...
}
DataTable.Rows
ので、ここで必要とされるCast()
への呼び出しは非ジェネリックIEnumerable
を実装し、LINQの拡張メソッドは、のためにのみ利用可能ですIEnumerable<T>
また別のオプションがあります。
DataTable dt;
foreach (DataRow r in dt.AsEnumerable().Skip(1))
{
//do something...
}
おかげで:)それ – user1080533
ああ、ただ一つのこと... .SKIP(0)があってはならないための正しい構文を見つけるcouldntの? – user1080533
いいえ、 'Skip'は無視する項目の数を取るので、そうしてはいけません。 – Nuffin
は、ここでは、あなたの答えを持って迅速かつ汚い
DataTable dt;
bool isFirst = true;
foreach (DataRow r in dt.Rows /*EXCEPT THE FIRST ONE*/)
{
if(isFirst) {
isFirst = false;
continue;
}
//do something...
}
ダンレスター、今はノブのように見える。 – Matthew
また、 "最初の"行はデータテーブルのソート定義に依存していると思うので注意が必要です。最終的に –
はLINQと一緒に行かないことに決めましたので、私はあなたの答えを使用しました。回答ありがとうございました。 – user1080533