2012-02-28 63 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();