使用Linq查询数据表无法正常工作

时间:2014-09-15 00:14:49

标签: c# linq

我有一个使用此代码转换为数据表的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并看到了一些例子,但我做错了什么并且不确定是什么。

1 个答案:

答案 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