以下方式我正在通过LINQ解析csv文件,但是当我检查用户类数据时,我发现标题部分即将到来。代码中有什么问题。
List <string> list= new List<string>("Box", "Gate", "Car");
string SearchStr ="Box";
int BoxId= 0;
foreach (string SearchString in list)
{
if (str == SearchString)
{
BoxId= list.IndexOf(str);
break;
}
}
答案 0 :(得分:1)
你好像在错误的地方做Skip(1)
:
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray()); // IEnumerable<string[]>
目前您正在跳过每行的第一个列,而不是第一个行。
答案 1 :(得分:1)
您正在跳过第一列,而不是第一行,请改用:
csvlines.Skip(1).Select(l => l.Split(','));
请注意,如果Skip
位于Select
之前或之后并不重要,您也可以写一下:
csvlines.Select(l => l.Split(',')).Skip(1));
答案 2 :(得分:1)
不要跳过每一行的第一列,而是跳过第一行。也就是说,将Skip(1)
移到Select()
之前。像这样:
var csvlines = File.ReadAllLines(filename); // IEnumerable<string>
//var csvLinesData = csvlines.Select(l => l.Split(',').Skip(1).ToArray()); // IEnumerable<string[]>
// Instead of skipping the first column, skip the first line!
var csvLinesData = csvlines.Skip(1).Select(l => l.Split(',').ToArray()); // IEnumerable<string[]>
int flag = 0;
var users = csvLinesData.Select(data => new User
{
CSRName = data[6],
CallStart = data[0],
CallDuration = data[1],
RingDuration = data[2],
Direction = data[3],
IsInternal = data[4],
Continuation = data[5],
ParkTime = data[7]
}).ToList();