C# 读取CSV文件Linq

C# 读取CSV文件Linq,c#,linq,C#,Linq,我的数据如下: 姓名、出生日期、地点、资格 “普里亚兰扬”,1988年1月1日,“马哈拉施特拉邦浦那”,B.Tech “阿格拉瓦尔马扬克”,1990年5月5日,“拉吉斯坦兰奇”,不列颠哥伦比亚省 当我使用split属性和逗号作为分隔符时,我的名称和位置值会被拆分,但它是一个单独的值。那么,如何使用linq将名称和位置作为单独的值来获取。在这一点上,linq实际上不适用。RegEx是一个更自然的选择,而且,值得注意的是,这个问题已经解决了。我就是在那里找到这个: protected virtu

我的数据如下:

姓名、出生日期、地点、资格
“普里亚兰扬”,1988年1月1日,“马哈拉施特拉邦浦那”,B.Tech
“阿格拉瓦尔马扬克”,1990年5月5日,“拉吉斯坦兰奇”,不列颠哥伦比亚省


当我使用split属性和逗号作为分隔符时,我的名称和位置值会被拆分,但它是一个单独的值。那么,如何使用linq将名称和位置作为单独的值来获取。

在这一点上,linq实际上不适用。RegEx是一个更自然的选择,而且,值得注意的是,这个问题已经解决了。我就是在那里找到这个:

  protected virtual string[] SplitCSV(string line)
  {         System.Text.RegularExpressions.RegexOptions options = ((System.Text.RegularExpressions.RegexOptions.IgnorePatternWhitespace | System.Text.RegularExpressions.RegexOptions.Multiline) 
        | System.Text.RegularExpressions.RegexOptions.IgnoreCase);
     Regex reg = new Regex("(?:^|,)(\\\"(?:[^\\\"]+|\\\"\\\")*\\\"|[^,]*)", options);
     MatchCollection coll = reg.Matches(line);
     string[] items = new string[coll.Count];
     int i = 0;
     foreach(Match m in coll)
     {
        items[i++] = m.Groups[0].Value.Trim('"').Trim(',').Trim('"').Trim();
     }
     return items;
  }

尝试LINQ解析填充CSV是没有希望的。你可以得到一个免费的阅读器(这里是示例)。也许有一种方法可以通过应用正则表达式来处理这种情况。但是,在深入研究之前,先确定一下:您不能使用另一个分隔符(例如分号或管道)创建CSV文件吗?我们已经在生产中使用LinqToCsv好几年了。效果很好。