C# 如何读取特定行的文件

C# 如何读取特定行的文件,c#,io,console-application,C#,Io,Console Application,我正在制作一个控制台应用程序,我需要能够从文本文件中写入、搜索和删除条目,我可以将文件写入记事本文件,但基本上就是这样,这就是我必须读取的文件: public static void SearchDetails() { Console.WriteLine("Enter ID Number"); string myfile = System.IO.File.ReadAllText(@"C:\\file.txt"); System.Console.WriteLine(myfile); } 这将调

我正在制作一个控制台应用程序,我需要能够从文本文件中写入、搜索和删除条目,我可以将文件写入记事本文件,但基本上就是这样,这就是我必须读取的文件:

public static void SearchDetails()
{
Console.WriteLine("Enter ID Number");

string myfile = System.IO.File.ReadAllText(@"C:\\file.txt");
System.Console.WriteLine(myfile);
}

这将调出文件中的所有文本,但我需要能够在文件中搜索特定的数字,然后调出下面的三行。如何让它读取输入,使其与文本文件中的数字匹配,然后调出接下来的3行?

考虑到您要回答的问题和注释,最终答案将是:

    public static void SearchDetails()
    {
    Console.WriteLine("Enter ID Number");
    int Id = 0;
    int.TryParse(Console.ReadLine(), out Id);
 string[] lines = System.IO.File.ReadAllLines(@"C:\\file.txt");
            List<string> IdLines = lines.Where((x, i) => i % 4 == 0).ToList();
            int IdLine = IdLines.IndexOf(Id);
            if (IdLine != -1)
            { //then result found
                //Id is what user searched for or
               // string Id = lines[IdLine*4];
                //string[] results = lines.Where((x, i) => i > IdLine * 4 && i < IdLine * 4 + 4).ToArray();
           for(int i=IdLine*4;i<IdLine*4+4;i++)
            System.Console.WriteLine(lines[i]);
            }
            else
            {
                Console.WriteLine("no results!");
            } 

    }
publicstaticvoidsearchdetails()
{
Console.WriteLine(“输入ID号”);
int Id=0;
int.TryParse(Console.ReadLine(),out Id);
字符串[]行=System.IO.File.ReadAllLines(@“C:\\File.txt”);
列出idline=line.Where((x,i)=>i%4==0.ToList();
int IdLine=IdLine.IndexOf(Id);
如果(IdLine!=-1)
{//然后找到结果
//Id是用户搜索的内容,或
//字符串Id=行[IdLine*4];
//字符串[]结果=行。其中((x,i)=>i>IdLine*4&&i对于(inti=IdLine*4;i,你可以对结果做任何你想做的事情,但是像这样的事情是你想要的

// Read the file and display next three lines
System.IO.StreamReader file = new System.IO.StreamReader("c:\\file.txt");

string line;
int lineCnt = 3;
while((line = file.ReadLine()) != null)
{
    if (line.Contains(myID) & !bGet) 
    {
        bool bGet = true;
    }

    if (bGet && lineCnt > 0) 
    {
        bool bGet = true;
        Console.WriteLine (line);
        lineCnt--;
    }

    if(lineCnt == 0) {break;}

}
file.Close();

// Suspend the screen.
Console.ReadLine();

当然,您应该在读取行之前处理错误,因为输入的行数可能超过lines@Ved如果答案对您有效,请接受答案。我尝试过这些答案,但我不确定如何从程序中获取要读取的搜索号码。如何在[linenumber]中指定号码?谢谢你的回复,这肯定让我更接近我需要做的事情,但我正在努力的主要事情是能够找到搜索号码的匹配项,例如搜索2将显示ID 2以及下面的3行,不仅仅是行号,你知道怎么做吗?@Ved你说下面的三行是什么意思?你是说全部第0、1、2行?我不明白你的意思