我知道这个问题标题不准确,必须有一个更好的,但我的英语不太好。此问题可能也是重复的。 现在任务是读取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语句中实现我的目标?
答案 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();