我是编程的初学者,我很难分析和调试如何跳过阅读csv文件的第一行。我需要一些帮助。
我需要我的ID来填充我的表单中的组合框,其中包含所有的 Id's.为了不包含标题在浏览和 显示。我需要跳过第一行。跳过阅读csv文件的第一行
public bool ReadEntrie(int id, ref string name, ref string lastname, ref
string phone, ref string mail, ref string website)
{
int count = 0;
CreateConfigFile();
try
{
fs = new FileStream(data_path, FileMode.Open);
sr = new StreamReader(fs);
string temp = "";
bool cond = true;
while (cond == true)
{
if ((temp = sr.ReadLine()) == null)
{
sr.Close();
fs.Close();
cond = false;
if (count == 0)
return false;
}
if (count == id)
{
string[] stringSplit = temp.Split(',');
int _maxIndex = stringSplit.Length;
name = stringSplit[0].Trim('"');
lastname = stringSplit[1].Trim('"');
phone = stringSplit[2].Trim('"');
mail = stringSplit[3].Trim('"');
website = stringSplit[4].Trim('"');
}
count++;
}
sr.Close();
fs.Close();
return true;
}
catch
{
return false;
}
}
您可以使用'var line = File.ReadLines(fileName).Skip(id).FirstOrDefault()'而不是打扰流获取所需的一行。如果id> 0,那么你总是会跳过第一行,但是如果id可以是0,那么你只需要执行'Skip(id + 1)'。 – juharr
有一些错误:1)在''if''设置'cond'为false的块中,您正在关闭'sr'和'fs',但是当计数不是'0'时,您在结束时再次关闭它'while'循环。我想这会导致异常。 2)与前面的情况相同,但在下一个if语句中会失败。当'temp'为'null'且运气不好时'count'等于'id',那么你试图访问'null.Split(',');'但是它会导致异常。我会推荐扩展'如果(count == 0)返回false;'用'else返回true;' –