DataColumn値を文字列の配列に変換するときのベストプラクティスは?
[編集]文字列の配列に変換されるすべてのDataTable行の特定のDataColumnのすべての値?
私があなたの目標を理解したなら、あなたは特定の列を指定し、そのすべての値を文字列配列として返したいと思うでしょう。
これらのアプローチを試してください。
int columnIndex = 2; // desired column index
// for loop approach
string[] results = new string[dt.Rows.Count];
for (int index = 0; index < dt.Rows.Count; index++)
{
results[index] = dt.Rows[index][columnIndex].ToString();
}
// LINQ
var result = dt.Rows.Cast<DataRow>()
.Select(row => row[columnIndex].ToString())
.ToArray();
代わりに、columnIndex
をcolumnName
に置き換えることができます。次に例を示します。
string columnName = "OrderId";"
EDIT:特に文字列配列を要求しましたが、要件に柔軟に対応できる場合は、forの前に配列の長さを決定する必要がないようにList<string>
をお勧めします。最初の例でループし、それにアイテムを追加するだけです。代わりにforeachループを使用する良い機会でもあります。
次に、コードを次のように書き直します。
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[columnIndex].ToString());
}
DataRow.ItemArrayプロパティ-
http://msdn.Microsoft.com/en-us/library/system.data.datarow.itemarray.aspx
また、どのバージョンを使用していますか? DataTableExtensionsクラスをチェックする必要があります-
http://msdn.Microsoft.com/en-us/library/system.data.datatableextensions.aspx
そしてDataRowExtensionsクラス-
http://msdn.Microsoft.com/en-us/library/system.data.datarowextensions.aspx
この質問は古いことは知っていますが、Google検索で同様のことをしようとしていることがわかりました。データテーブルの特定の行に含まれるすべての値からリストを作成したかったのです。以下のコード例では、GUIウィザードを使用してVisual StudioのプロジェクトにSQLデータソースを追加し、必要なテーブルアダプターをデザイナーにドロップしました。
'Create a private DataTable
Private authTable As New qmgmtDataSet.AuthoritiesDataTable
'Fill the private table using the table adapter
Me.AuthoritiesTableAdapter1.Fill(Me.authTable)
'Make the list of values
Dim authNames As List(Of String) = New List(Of String)(From value As qmgmtDataSet.AuthoritiesRow In Me.authTable.Rows Select names.authName)