就C#而言,我是一个完整的新手,我正在尝试制作一个使用csv文件作为源数据的程序。
这是我的代码的一部分:
using (var sr = new StreamReader(fileInput))
while ((line = sr.ReadLine()) != null)
{
if (line.Contains(mK)) // <---Variable inputted by the user
{
Console.WriteLine(""+line);
myValue = File.ReadAllLines(fileInput).Skip(1).First().Split(',')[0];
}
LineNumber++;
}
我正在使用的CSV文件可能有8列,每列都有一种信息。单行就像一个东西列表。
但是我现在已经坐了3天了,我根本不知道如何打印出我想要的特定行和列的文件。
我在这里的东西遍历每一行,当它在行中某处找到输入时,它会将整行写出来。
之后我尝试创建一个var myValue,它将跳过第一个(Header)行,并将我输入的特定列写为最后的数字。但是,我不知何故需要找到改变线的方法。因为它似乎总是只占用第一条数据线。我检查了它是否正在使用int LineNumber ++读取行号并且它正在给我回到我想要的数字。如何将该数字放入代码中以便输出我需要的特定单元格?
答案 0 :(得分:1)
为什么你再读一遍整个文件只是为了跳过一行?您已经在line
变量中找到了您感兴趣的行。
只需将其拆分并获取所需的列(我猜想的第一个):
using(var sr = new StreamReader(fileInput))
while ((line = sr.ReadLine()) != null) {
if (line.Contains(mK)) // <---Variable inputted by the user
{
var value = line.Split(",")[0];
Console.WriteLine(value);
}
}
答案 1 :(得分:0)
费德里科已经回答了这个问题但是,这里有关于你LineNumber
变量的另一个问题。
using (var sr = new StreamReader(fileInput))
while ((line = sr.ReadLine()) != null)
{
LineNumber++;
if(LineNumber < 1)//if reading header record
{
//skip
}
else
{
//not reading header line
//check if the line meets your criteria
if(line == "my anticipated value")
{
line.Split(',')[0];//pull index 0 from the array on strings created by split
}
}
}