Linq修剪IList <string []>中的每个单词

时间:2016-11-21 08:37:26

标签: c# string linq csv ienumerable

我知道这个问题标题不准确,必须有一个更好的,但我的英语不太好。此问题可能也是重复的。 现在任务是读取csv文件,格式如下:

IList<string[]>

现在我想使用Linq解析为IList<string[]> v = File.ReadAllLines("test.csv").Select( l => l.Split(new char[] { ',', ',' }, StringSplitOptions.RemoveEmptyEntries) //if add this, cannot compile //.Select(w => w.Trim()) ) .Skip(1).ToList(); ,因此以后很容易使用(每行转换为一个对象,并且有各种类型的csv文件很多)。代码如下:

IEnumable<Char>

请在注释行上提供帮助。我想修剪每个单词,以便以后可以将它们转换为整数。但这不会编译(我知道原因可能是Linq将w视为{{1}},但我怎样才能仅在一个Linq语句中实现我的目标

1 个答案:

答案 0 :(得分:1)

在您的初次尝试中,您有错误

l.Split(new char[] { ',', ',' } ...

因为', '不能是单个字符。你想要这样的东西

IList<string[]> v = File
  .ReadLines("test.csv")
  .Skip(1) // skip titles
  .Select(line => line.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
  .Select(items => items
    .Select(item => item.Trim()) // trim each item 
    .ToArray())
  .ToList();

修改:Evk建议的较短版本(请参阅下面的评论)

IList<string[]> v = File
  .ReadLines("test.csv")
  .Skip(1) // skip titles
  .Select(line => line
    .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
    .Select(item => item.Trim()) // trim each item 
    .ToArray())
  .ToList();