0
我的数据如下,阅读CSV文件的LINQ
姓名,出生日期,地点,资质
“兰詹,普里亚”,01/01/1988年, “浦那,马哈拉施特拉邦”,B.Tech
“ Mayank,Agrawal“,05/05/1990,”Ranchi,Rajsthan“,BCA
当我使用split属性和逗号作为分隔符时,我的名字和位置值被分割,但它的单个值。然后如何获取Name和位置作为使用LINQ单个值。
我的数据如下,阅读CSV文件的LINQ
姓名,出生日期,地点,资质
“兰詹,普里亚”,01/01/1988年, “浦那,马哈拉施特拉邦”,B.Tech
“ Mayank,Agrawal“,05/05/1990,”Ranchi,Rajsthan“,BCA
当我使用split属性和逗号作为分隔符时,我的名字和位置值被分割,但它的单个值。然后如何获取Name和位置作为使用LINQ单个值。
这不会真的与Linq一起。 RegEx是一个更自然的适合和奖金,这个问题已被solved by others。这是我发现这个的地方:
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;
}
在解析填充CSV文件时尝试使用LINQ是无望的。你可以得到一个免费的阅读器(这里是[链接](http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader))。 – dasblinkenlight
可能有办法通过应用正则表达式来处理这种情况。但是,在我们深入研究之前,请确定:您是否可以使用其他分隔符(例如分号或管道)创建CSV文件? –
我们已经在生产中使用LinqToCsv几年了。很棒。 http://www.codeproject.com/Articles/25133/LINQ-to-CSV-library – hatchet