2012-02-28 70 views
0

在我目前ASP.net MVC 3.0項目我堅持的情況。讀取數據 - 使用LINQ的實體?

  1. 我有四個.txt文件各有approximatly 100K行的記錄
  2. 這些文件將在每週基地的新文件所取代。

我需要從這四個文本文件查詢數據,我無法選擇最好和有效的方式來做到這一點。

3種方式,我能想到

  1. 這些文本文件轉換成XML每週和的LINQ XML查詢它
  2. 運行批處理導入每週TXT至SQL Server和查詢使用Linq-Entities
  3. 避免所有轉換和查詢直接從文本文件

任何一個可以建議應對這種情況最好的方法。

更新:


文本文件的網址 URL to access the txt File with credentials
我應該連接到這個文件與證書。

一旦我成功連接,我將與管道有文本文件,如下爲Deliminator
這是文本文件


Data in Text File is as this 現在我要查找的字段以黃色突出顯示,並獲得該行中的數據。

注:文本文件的前兩行是該文件的標題。

+0

是否可以在記錄中使用分隔符來相應地分解它們,並將數據轉換爲對象? – ryoung 2012-02-28 15:06:34

+0

空間是我之前與另一TXT到SQL Server的空間並沒有真正幫助我我去字符數做這個delimiters-。 – HaBo 2012-02-28 15:23:29

+0

@ryoung我發現管道(|)被用作分隔符 – HaBo 2012-03-07 14:42:39

回答

0

還有我找到了一種方法我自己。希望這對任何有興趣完成此任務的人都有用。

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();