逐行读取CSV并填充.net对象

时间:2016-08-17 04:13:23

标签: .net linq csv


我有一个csv文件,我需要一次读取一行并从中填充.net对象(第一行标题)。
现在,我知道我可以通过 SELECT COALESCE(NULL,NULL,NULL,'abc',NULL,'def'); returns abc SELECT COALESCE(NULL,NULL,NULL); returns NULL 然后分配对象属性,但我想知道是否有更短的方法。
我尝试使用LINQ但读取了所有行ReadLine
请提供建议。感谢。

1 个答案:

答案 0 :(得分:1)

是的伊万说,使用ReadLines()

在一次访问中读取标题和数据,您可以使用旧学校的枚举器:

static void Main(string[] args)
{
  var enumerator = File.ReadLines("foo.csv").GetEnumerator();

  enumerator.MoveNext();
  string headerLine = enumerator.Current; // null if file empty

  while (enumerator.MoveNext())
  {
    string dataLine = enumerator.Current;
  }
}

或在标题之后,您可以将枚举器转换为IEnumerable<>回:

static IEnumerable<T> AsEnumerable<T>(IEnumerator<T> enumerator)
{
  while (enumerator.MoveNext()) yield return enumerator.Current;
}

并用var query = AsEnumerable(enumerator);

替换while循环