2017-06-06 8 views
0

を使用して、現在、私は私は私はそれを数> 0それでも をチェックしていることを管理するために、エラーにデータのない行 cantain ソース を取得していながら、どのようにこれを解決するか考えている。ソースレコードがゼロであるときにテイクasp.net

dynamic dt = ds.Tables(0); 
int totalrowCount = dt.Rows.Count; 


//dt.Rows.Count 
//dt.Select().Take(100) 
// dt.Rows.Cast(Of System.Data.DataRow)().Take(100) 
DataTable dt1 = default(DataTable); 
if (totalrowCount > 0) { 
    dt1 = dt.AsEnumerable().Take(100).CopyToDataTable(); 
} else { 
    dt1 = dt.AsEnumerable().CopyToDataTable(); 
} 
+0

- 行がない場合は、 'dt.AsEnumerable()テイク(100)' DT 'と同じ配列を返します。 .AsEnumerable() '。 *どこに*エラーが発生しているのかわからないことには役立ちません。後で空の 'DataTable'を必要とするコードの場合、単純に*行ではないときに何をしたいのかをもっと慎重に考える必要があります。 –

+0

他にもエラーが表示されます。 –

+0

@Zbidi他の部分にエラーが発生しています –

答えて

0

documentedとして、空の一連の行にはCopyToDataTable()を呼び出すことはできません。おそらく、含めるスキーマ情報がないためです。代わりに、元のテーブルが空で、同じスキーマを持つ新しいテーブルが必要な場合は、そのテーブルを複製してください。だから、必要があるだろう:あなたがチェックを行うことを期待するものはっきりしない

DataTable dt = ds.Tables(0); 
DataTable newTable = dt.Rows.Count > 0 
    ? dt.AsEnumerable().Take(100).CopyToDataTable() 
    : dt.Clone(); 
-1

次の行の数を確認してください。

if (ds.Tables.Count > 0 && ds.Tables[0] != null && ds.Tables[0].Rows.Count > 0) 

しかし場合行nubmer < = 0

dt1 = dt.AsEnumerable().CopyToDataTable(); 

この行は意味をなさない。 ヌル行をフェッチする必要がありますか?

+1

テーブルがない場合、コードはどこかで失敗するでしょう。 OPは、行があるかどうかを正常にチェックしています。 –

+0

コメントjonのおかげで – Zbidi

関連する問題