阅读CSV文件Linq

时间:2012-06-30 03:33:17

标签: c# linq

我的数据如下,

名称,生日,地点,资格
“兰詹,普里亚”,01/01/1988, “Mumbai,马哈拉施特拉”,B.Tech
“Mayank,阿格拉瓦尔”,05/05/1990, “兰契,Rajsthan”,BCA

当我使用split属性和逗号作为分隔符时,我的名称和位置值会被分割,但是它只有一个值。然后如何使用linq将Name和Location作为单个值。

1 个答案:

答案 0 :(得分:1)

在这个问题上,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;
  }