Объединение содержимого строк текстовых файлов в C #

У меня есть два огромных текстовых файла, формат которых указан ниже.

Файл 1:

ID1,20
ID2,20
ID3,30

Файл 2:

ID3,75
ID1,84
ID2,70

Оба этих файла содержат более 200 000 строк. Мне нужно прочитать оба файла и создать третий файл в этом формате:

Файл 3:

ID1,20,84
ID2,20,70
ID3,30,75

ID может быть любой строкой, вводимой пользователем. Третий файл должен быть создан путем сопоставления идентификатора в строках файла 1 с идентификатором в строках файла 2. Я написал код, но создание файла 3 занимает много времени. Данная задача связана с распараллеливанием, поэтому я хочу, чтобы код сэкономил мне как можно больше времени. Предложите более быстрый и эффективный способ решения этой проблемы.

(Вот код, который я использовал)

public void positionCure(string afile,string bfile,string dfile)
    {
        string alphaFilePath = afile;

        List<string> alphaFileContent = new List<string>();

        using (FileStream fs = new FileStream(alphaFilePath, FileMode.Open))
        using(StreamReader rdr = new StreamReader(fs))
        {
            while(!rdr.EndOfStream)
            {
                alphaFileContent.Add(rdr.ReadLine());
            }
        }

        string betaFilePath = bfile;

        StringBuilder sb = new StringBuilder();


        using (FileStream fs = new FileStream(betaFilePath, FileMode.Open))
        using (StreamReader rdr = new StreamReader(fs))
        {

            while(! rdr.EndOfStream)
            {
                string[] betaFileLine = rdr.ReadLine().Split(Convert.ToChar(","));

                foreach (string alphaline in alphaFileContent)
                {
                        string[] alphaFileLine = alphaline.Split(Convert.ToChar(","));

                        if (alphaFileLine[0].Equals(betaFileLine[0].ToString()))
                        {
                            sb.AppendLine(String.Format("{0}, {1}, {2}", betaFileLine[0], betaFileLine[1], alphaline.Substring(alphaline.IndexOf(Convert.ToChar(","))+1)));
                        }

                }
            }


           }

        using (FileStream fs = new FileStream(dfile, FileMode.Create))
        using (StreamWriter writer = new StreamWriter(fs))
        {
            writer.Write(sb.ToString());
        }


        }
    }
0
задан Amy 10 January 2012 в 15:24
поделиться