Linq to trim IList<string[]> 中的每个单词
Linq to trim each word in IList<string[]>
我知道这个题名不准确,肯定有更好的,但是我的英文不是很好。而且这个问题可能是重复的。
现在任务是读取csv文件,格式如下:
col1, col2
int1, string1
int2, string2
现在想用Linq解析成IList<string[]>
,方便以后使用(每一行转成一个对象,各种类型的csv文件很多)。代码如下:
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();
请在注释行上提供帮助。我想 trim 每个单词,以便以后可以将它们转换为整数。但这不会编译(我知道原因可能是Linq将w视为IEnumable<Char>
,但我如何仅在一个Linq语句中实现我的目标?
在您最初的尝试中,您在
中遇到了错误
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();
我知道这个题名不准确,肯定有更好的,但是我的英文不是很好。而且这个问题可能是重复的。 现在任务是读取csv文件,格式如下:
col1, col2
int1, string1
int2, string2
现在想用Linq解析成IList<string[]>
,方便以后使用(每一行转成一个对象,各种类型的csv文件很多)。代码如下:
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();
请在注释行上提供帮助。我想 trim 每个单词,以便以后可以将它们转换为整数。但这不会编译(我知道原因可能是Linq将w视为IEnumable<Char>
,但我如何仅在一个Linq语句中实现我的目标?
在您最初的尝试中,您在
中遇到了错误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();