数据总数没什么问题,你把Foreach该成for循环试试,可能是因为Linq的延迟特性引起

解决方案 »

  1.   

    Console.Write(n[1] + " " + n[2] + " " + n[0] + "\r");
    ==》
    应该是n.多少吧。或者n.你的字段名.
      

  2.   

    Console.Write(n[1] + " " + n[2] + " " + n[0] + "\r");
    =>
    Console.Write(n["area"].ToString() + " " + n["Price "].ToString() + " " + n["ID"].ToString() + "\r");
     再不行改成for 循环
    for(int j=0;j< dbSet.Rows.Count;j++)
    {
    n[j] = dbSet.Rows[j].Columns[列名/索引].ToString();
    }
    http://gordon1117.blog.163.com/blog/static/1534862620091584827417/
      

  3.   

    Console.WriteLine("Row: {0}", dbSet.Rows.Cast<DataRow>().ToList().Count());
    foreach (DataRow n in dbSet.Rows.Cast<DataRow>().ToList())
    {
        ...
    }这样输出什么
      

  4.   

    while,for,goto都试过了没有用!
      

  5.   

    问题出在"\r",回车换行是"\r\n","\r"只是回车,也就是说让光标重新回到第一行的开头,并没有换行,所以后面的数据重复打印并覆盖了前面的数据,而且正巧最后一行的数据是最长的。
    为什么不用:Environment.NewLine 呢?关于回车换行,每个操作系统都不一样,不建议硬编码。而且一般单独写的话也不是 \r,而是 \n。
      

  6.   

    谢谢啊!windows换行符,大哥厉害!