2011-06-27 64 views
10

我有一个关于DataRows的问题。我有一个DataTable,然后我转换成DataRow的列表。现在我想要存储在每个DataRow中的字符串信息。我怎样才能做到这一点?这是我的代码:获取c#中datarow的值

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

“现在我想要在每个数据行中存储字符串信息。”这有点令人困惑。你想要连接一个特定列的所有值吗?也许是'List '或其他一些数据收集?也许你想写出来的文件? –

回答

4

只需使用索引来访问每个元素。以下代码将访问列表中的第一个元素。

list[0].MyString; 
+1

什么是mystring? – Ryan

+0

您尝试访问的属性的名称。 – BentOnCoding

+1

你可以通过列表[0] [“columnname”]或列索引访问每个单独的列,如列表[0] [0] – Slider345

6

你能做到这一点,

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

或该得到 “的ColumnName” 懒洋洋的所有字符串值。

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

为什么要将DataTable转换为列表?就是想。

+0

我实际上需要数据行的所有内容作为列表元素,所以我可以更容易地操作它们 – Ryan

+0

由于数据行将包含对象,因此必须将它们全部转换为适当的类型,并使用一些非泛型列表(ArrayList,例如)将DataRow内容移动到数组中。这不一定是最好的办法,但这取决于你的情况。 –

+0

List <>比DataTable更方便,但是如果你的表格很大,那么使用'dt'本身可以避免创建一个接近重复的数据结构。毕竟,它可以像List <>一样进行索引。我说过这个在过去犯过同样的错误,然后遇到庞大的数据集。像这样创建列表可能会很慢。 :) –

0

您可以按列名或索引检索它。因此,如果您尝试检索的字符串在第一列中,您可以执行列表[rowNum] [0] .ToString()

+0

datarows的箭头中没有列.... – 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(); 
相关问题