なぜ私は、foreachの(DataTable.Rows中のvar項目)を行うことはできませんか?

StackOverflow https://stackoverflow.com/questions/2325777

質問

は、私は次のことを行うことができない理由はあります

foreach (var Item in DataTable.Rows) {

むしろやってたより

foreach (DataRow Item in DataTable.Rows) {
それは他のデータ型であるように

私は、これが可能だと思っているだろう。たとえばます:

foreach (var Employee in Staff) { // string[] Staff etc...
私が最初にforeachループをしようとすると、

、私が手にエラーの CS0021:「オブジェクト」タイプの表現に[]でインデックスを適用することはできません

なぜ.RowsがでDataRow?

のコレクションを返すことをコンパイラ図アウトすることはできません
役に立ちましたか?

解決

コンパイラのみRowsの型としてIEnumerableを選択できるように、

DataRowCollectionを効果、objectvar)を返します。使用Rows.Cast<DataRow>あなたはvarを使用する場合。

Castは、あなたがシステムを含める必要がありますので、列挙の上で定義されています.Linqます。

他のヒント

ブライアンは、右この理由については絶対にあるが、それを回避する簡単な方法があります:使用<のhref = "http://msdn.microsoft.com/en-us/library/system.data.datatableextensionsが。 asenumerable.aspx」REL = "noreferrer"> DataTableExtensions.AsEnumerable()の

foreach (var row in DataTable.AsEnumerable())
{
    ...
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top