2017-11-05 6 views
1

すべての確認済みトランザクションについて、テキストファイルに行単位でデータを追加しました。ユーザーが電子メールアドレスを入力し、その電子メールに接続されているすべての関連する取引詳細を表示する必要がある検索機能を追加したい。テキストファイルからデータを取り出す方法

bool writeNextLine = false; 
StringBuilder sb = new StringBuilder(); 

// Read the file and display it line by line.    
using (System.IO.StreamReader file = new System.IO.StreamReader("record.txt")) 
{ 
    while ((line = file.ReadLine()) != null) 
    { 
     if (line.Contains(txt_SearchBooking.Text)) 
     { 
      // This append the text and a newline into the StringBuilder buffer  
      sb.AppendLine(line.ToString()); 

      lbl_result.Text += sb.ToString(); 
     } 
    } 
} 

メールを含む行のみが表示されます。他の詳細は表示されません。

電子メールは、すべての取引詳細の最後の行にあります。

confirmmsg = 
     " Transaction # : " + EmployeeIDTextBox.Text + ClientIDTextBox.Text + UniqueIDTextBox.Text + "\r\n" 
    + " First Name : " + ClientFirstNameTextBox.Text + "\r\n" 
    + " Telephone Number : " + ClientTelephoneNumberTextBox.Text + "\r\n" 
    + " Investment : " + investmentamt.ToString("C2") + "\r\n" 
    + " Interest : " + (twelvemonthint * 100).ToString() + "%" + "\r\n" 
    + " Interest Amount : " + (invesmentcalc(investmentamt, twelvemonthterm, twelvemonthint) - investmentamt).ToString("C2") + "\r\n" 
    + " Bonus : " + bonus.ToString("c2") + "\r\n" 
    + " Total Returns : " + invesmentcalc(investmentamt, twelvemonthterm, twelvemonthint).ToString("C2") + "\r\n" 
    + " E-mail : " + ClientEmailTextBox.Text; 

これはテキストファイルに書き込まれるデータです。

+0

名前のように、 'ReadLine'は行を読み込みます。あなたの 'confirmmsg'は9行を含んでいます。 'ReadLine'はそれらを一つずつ読み込みます。 9行目のみに電子メールアドレスが含まれ、最初の8行はスキップされます。 'ReadLine'に関する限り、9行目と8行目との間には接続がありません。 – GSerg

+0

サンプルテキストファイルを共有する - データがファイル内でどのように整理されているかを示します。 –

+1

オフトピック:stringbuilderを使うのは良いですが、たびに 'lbl_result.Text + = sb.ToString();'を実行することでその利点を否定します。あなたのstringbuilderがすべてを集めてループを_outside_するだけで、 'lbl_result.Text = sb.ToString();' – oerkelens

答えて

0

トランザクションごとに9行が常にあり、電子メールが最後の行である場合は、File.ReadAllLinesとカウンタを使用できます。

var lines = File.ReadAllLines("records.txt"); 
for(int i = 0; i < lines.Length; i++) 
{ 
    var line = lines[i]; 
    if(line.Contains(txt_SearchBooking.Text)) 
    { 
     //Retrieve the previous lines 
     for(int y = i-8; y <= i; y++) 
     {    
      lbl_result.Text += lines[y]; 
     } 
    } 
} 
関連する問題