Чтение данных из текстовых файлов - используя Linq-Entities? - PullRequest
0 голосов
/ 28 февраля 2012

в моем текущем ASP.net MVC 3.0 проекте я застрял в ситуации.

  1. У меня есть четыре файла .txt, каждый из которых имеет приблизительно 100 тыс. Строк записей
  2. Эти файлы будут заменяться новыми файлами еженедельно.

Мне нужно запросить данные из этих четырех текстовых файлов, я не могу выбрать лучший и эффективный способ сделать это.

3 способа мыслить

  1. Преобразуйте эти текстовые файлы в XML на еженедельной основе и запросите их с помощью Linq-XML
  2. Запуск пакетного импорта еженедельно из txt на SQL Server и запрос с использованием Linq-Entities
  3. избегать всех преобразований и запросов непосредственно из текстовых файлов .

Может кто-нибудь предложить лучший способ справиться с этой ситуацией.

обновление:

<час /> URL текстового файла URL to access the txt File with credentials
Я должен подключиться к этому файлу с учетными данными.

как только я успешно подключусь, у меня будет текстовый файл, как показано ниже, с Pipeline as Deliminator
Это текстовый файл <Ч /> Data in Text File is as this Теперь мне нужно найти поле, выделенное желтым, и получить данные в этой строке.

Примечание. Первые две строки текстового файла являются заголовками файла.

1 Ответ

0 голосов
/ 10 марта 2012

Ну, как я нашел способ себя.Надеюсь, что это будет полезно для всех, кто заинтересован в этом.

string url = "https://myurl.com/folder/file.txt";
WebClient request = new WebClient();
                request.Credentials = new NetworkCredential(ConfigurationManager.AppSettings["UserName"], ConfigurationManager.AppSettings["Password"]);
                Stream s = request.OpenRead(url);
                using (StreamReader strReader = new StreamReader(s))
                {
                    for (int i = 0; i <= 1; i++)
                        strReader.ReadLine();
                    while (!strReader.EndOfStream)
                    {
                        var CurrentLine = strReader.ReadLine();
                        var count = CurrentLine.Split('|').Count();
                        if (count > 3 && CurrentLine.Split('|')[3].Equals("SearchString"))
                        {
                            #region Bind Data to Model
                            //var Line = CurrentLine.Split('|');
                            //CID.RecordType = Line[0];
                            //CID.ChangeIdentifier = Line[1];
                            //CID.CoverageID = Convert.ToInt32(Line[2]);
                            //CID.NationalDrugCode = Line[3];
                            //CID.DrugQualifier = Convert.ToInt32(Line[4]); 
                            #endregion
                            break;
                        }
                    }
                    s.Close();
                }
                request.Dispose();
...