我有一个使用此代码转换为数据表的CSV ..
public static DataTable ConvertCSVtoDataTable(string strFilePath)
{
StreamReader sr = new StreamReader(strFilePath);
string[] headers = sr.ReadLine().Split(',');
DataTable dt = new DataTable();
foreach (string header in headers)
{
dt.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(',');
DataRow dr = dt.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dr[i] = rows[i];
}
dt.Rows.Add(dr);
}
return dt;
}
当我尝试运行此查询时
var query = from a in res.AsEnumerable()
where a.Field<string>("Last Name") == "Dickinson"
select a;
foreach (var b in query)
Console.WriteLine(b);
我要归还的所有内容都是
System.Data.EnumerableRowCollection
1[System.Data.DataRow] System.Data.EnumerableRowCollection
1的System.Data.DataRow] System.Data.EnumerableRowCollection`1 [的System.Data.DataRow]
我已经看过SO并看到了一些例子,但我做错了什么并且不确定是什么。
答案 0 :(得分:1)
如果您需要这些值,您应循环每列或使用.ItemArray
foreach (var b in query)
Console.WriteLine(String.Join(",",b.ItemArray));
基本上,一行包含每列的值,如字典
Header: [colName1][colName2][colName3]
Row1: val1 val2 val3
Row2: val1 valX val3
Row3: val1 val2 val3
例如
Console.WriteLine(row2["colName2"]);
将返回valX