2017-01-10 19 views
0

drでは、データテーブルから102行を選択します。foreachループでdatarow配列を反復処理する方法

今私は、最初の100 DR values.Iは「intに型のDataRowを変換することはできませんようにそのショー各ループのための次のエラーを使用してループする必要があります)

まず私は100行を取り、後にいくつかのロジックを処理することができますそのロジックは、私は、残りの2つの値をピックアップする必要がありdr.afterから最初の100個の値から削除する必要があります。私はこれを行うことができますどのように

DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' "); 
foreach(int i in dr.Take(100)) 
{ 
    //process some logic 

    //here need to remove the first row from dr. 
} 

+0

ねえ@userは、それが助け、あなたはまだそれですべての問題に直面した場合に認めるなら、私が提供するソリューションを見て見てい:) –

答えて

1

あなたがでタイプを変更する必要がありますforeachDataRow

DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' "); 
foreach(DataRow i in dr.Take(100)) 
{ 
    //process some logic 

    //here need to remove the first row from dr. 
} 

foreachは試してみて、それはあなたが文で提供型に列挙子から受信した各項目をキャストします。この場合、intを指定します。最初にDataRowを受信し、キャストしようとしましたが、失敗しています。

+0

あなたはこの – User

+0

@userに少しelabrateを喜ばでき –

+0

どのようにすることができ、私の編集を参照してくださいいくつかのロジックが実行された後にdrから最初の100を削除してください。残りの2つのレコードもループする必要があります – User

0

まあ、Takeは、DataRowというオブジェクトの列挙型を返します。 intの列挙ではありません。だから、ループ変数はDataRowでなければなりません:

DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' "); 
foreach(DataRow row in dr.Take(100)) 
{ 
} 

は今、あなたは、単一のrowを持っていることを、あなたはいつものように、その行の列値にアクセスすることができます。

int i = (int)row["some_int_column"]; 
0

これはあなたのためのトリックを行う可能性があります。ループのために簡単です

DataRow[] dr = dtSourceDetail.Select("fld_description = '"+desc+"' "); 
for (int i = 0; i < dr.count; i=i+100) 
{ 
    foreach(DataRow i in dr.Skip(i).Take(100)) 
    { 
     //process some logic 
    } 
} 

最初のループは私たちのためだけのカウンタです。その後、次のforeachループを取っているので、次回100回をスキップして次回100回すると100回目になります。100レコードがないので、残りのレコードが得られます。

関連する問題