将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();
你可以用columnName
代替columnIndex
,例如:
string columnName = "OrderId";"
编辑: 你要求使用字符串数组,但如果对要求灵活的话,我更喜欢使用List<string>
。这样可以避免在第一个示例中在for循环之前确定数组长度并简单地添加项的需要。同时也是使用foreach循环的好机会。
然后我会按以下方式重写代码:
List<string> list = new List<string>();
foreach (DataRow row in dt.Rows)
{
list.Add(row[columnIndex].ToString());
}
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
DataRow.ItemArray
返回一行中的所有值作为数组。我认为 OP 想要将一列中的所有值作为数组返回。也许您可以扩展您的答案,以帮助解释 DataRow.ItemArray
和 DataTableExtensions
类如何提供帮助? - Ben'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)