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好几年了。效果很好。