2017-02-18 7 views
0

私はどこからでも検索してきましたが、良い方法を見つけることができません。現在、私はDataRowCollectionをSQLテーブルから取得していますが、セルから文字列を取得するより効率的な方法が必要です。DataRowの文字列をDRYで取得

これは、私は現在、何をすべきかです:

foreach (DataRow row in DataRowCollection) 
    string firstName = row["FirstName"].toString(); 
    string lastName = row["LastName"].toString(); 
    string email = row["Email"].toString(); 
    etc... 
} 

私は文字列のリストでリストを作成しようとしましたが、私もそれが欲しいように機能していないようでした。 しかし、私はそうのような「toString()を」使用しなくても、何かをしたいのですが...

foreach (DataRow row in DataRowCollection) 
    string firstName = row["FirstName"]; 
    string lastName = row["LastName"]; 
    string email = row["Email"]; 
} 

が、私はそう、私は変数を設定する必要はありません少し整然と物事になるだろう。このように感じるし、値を取得したらrow["column"]を使用してください。

これを行う最も簡単な方法は何ですか?

+0

'ストリングのfirstName = Convert.ToString(行["姓を使用"]);' – Igor

+1

ジェネリックスやマッピングライブラリを使用してドライに関する懸念? – Svek

+0

はい、正しく動作させることができませんでした。また、異なる列の異なる表があるため、実際にクラスにマップすることはできません。私は見続けるだろう。 – Slulego

答えて

0

強く型付けされたデータアクセスの場合はextension methodsからSystem.Data.DataSetExtensionsを使用してください。

var firstName = row.Field<string>("FirstName"); 
var lastName = row.Field<string>("LastName"); 
var email = row.Field<string>("Email"); 

EDIT:DataTableList<List<string>>に変換し、LINQの

var list = dataTable.Rows 
    .Cast<DataRow>() 
    .Select(dr => dr.ItemArray.Cast<string>()) 
    .ToList(); 

またはネストされたforeachの

var list = new List<List<string>>(); 
foreach (var row in DataRowCollection) { 
    var subList = new List<string>(); 
    foreach (var item in row.ItemArray) 
     subList.Add(item.ToString()); 
    list.Add(subList); 
} 
+0

'.Field 'は '.ToString()'よりも長いです。 – JLRishe

+0

@JLRisheしかし、すべてのタイプで一貫していれば、文字列だけでなく、物事を簡単にすることができます。 – Shreevardhan

+0

あなたの答えをありがとう。私が探しているのは、一度にすべての文字列を取得する方法です。私は、リスト[name [] = "John";]のように名前に値をリンクできるリストがあるかどうかもわかりません。私の背景のほとんどはJavaScriptを使用しているため、おそらく私はこれらのすべてのデータ変換について非常に好きです。 – Slulego

関連する問題