2011-06-27 6 views
10

私にはDataRowsに関する質問があります。私はDataTableを持っていて、私はDataRowのリストに変換しました。今私は各DataRowに格納されている文字列情報が必要です。これどうやってするの?これは私のコードです:Cでのdatarowの値を取得する

List<DataRow> list = dt.AsEnumerable().ToList(); 
+0

"今私は各データローに格納されている文字列情報が必要です。"これはちょっと混乱します。特定の列のすべての値を連結しますか?おそらく 'List 'または何か他のデータ収集?あなたはそれをファイルに書き出したいでしょうか? –

答えて

4

各要素にアクセスするためにインデックスを使用してください。次のコードは、リストの最初の要素にアクセスします。

list[0].MyString; 
+1

ミストリングとは何ですか? – Ryan

+0

アクセスしようとしているプロパティの名前。 – BentOnCoding

+1

そしてリスト[0] ["columnname"]、またはリスト[0] [0]のように列インデックスで個々の列にアクセスできます。 – Slider345

6

あなたは怠惰 "ColumnNameに" のすべての文字列値を取得するには、この、

foreach(var row in list) 
{ 
    var value = row["ColumnName"] as string; 
} 

またはこれを行うことができます。

var values = list.Select(row => row["ColumnName"] as string); 

なぜ、DataTableをリストにするのですか?ただ疑問に思う。

+0

私は実際にdatarowのすべての内容をリスト要素として必要としますので、簡単に操作することができます – Ryan

+0

datarowにはオブジェクトが含まれるため、後ですべてを適切な型にキャストして非ジェネリックリスト(ArrayList、たとえば、DataRowの内容を配列に移動します。これは必ずしも最良の方法ではありませんが、それはあなたのケースに左右されます。 –

+0

List <>はDataTableより手の込んだものですが、テーブルが巨大であれば、重複したデータ構造を作成するのを避けるために 'dt'自体を使うほうが良いでしょう。結局のところ、List <>のようにインデックスできます。過去に同じミスを犯した後、巨大なデータセットを実行していると私は言う。このようなリスト作成は遅くなる可能性があります。 :) –

0

カラム名またはインデックスで取得できます。したがって、検索しようとしている文字列が最初の列にある場合、リスト[rowNum] [0] .ToString()を実行することができます。

+0

データローの矢印にカラムがありません.... – Ryan

+0

データテーブルにデータがある場合は、カラムになります。リスト[0] [0] .ToString()を印刷してみてください。 – devsh

1

これはすべきことです。 string t = list[row]["column name"].ToString();

1

あなたがのDataRowに標準インデクサーを使用する必要があります:あなたが行から来るデータの配列で動作するようにしたい場合は、

string someValue = 
list[0]["SomeColumn"] as string; 

をそれとも、

ArrayList lst = new ArrayList(list[INDEX_OF_THE_ROW].Count); 

foreach(object value in list[INDEX_OF_THE_ROW]) 
{ 
    lst.Add(value); 
} 
1
List<DataRow> list = dt.AsEnumerable().ToList(); 
    var mystring = list[0]["ColumnName"].ToString(); 
関連する問題