2013-04-26 69 views
-3

我發佈了一次,似乎無法找到一個簡單的方法來轉換此。我試圖擺脫這種方法的2維數組,ExtractData並使用列表替換它,但沒有運氣。你們能否給我一些我可以脫離的例子或想法?謝謝。如何將2維數組中的代碼轉換爲列表?

private void ExtractData(DateTime dtmDay) 
    { 
    // set to selected date in MonthCalendar control 
    int intChosenDay = dtmDay.Day; 
    int intFileDay; // day of event from file 
    int intLineNumbers; // counts lines to skip 

    m_intNumberOfEvents = 0; // set number of events to 0 

    // initialize StreamReader to read lines from file 
    StreamReader objInput = 
     new StreamReader("calendar.txt"); 

    // read first line before entering loop 
    string strLine = objInput.ReadLine(); 

    // loop through lines in file 
    while (objInput.Peek() > -1 && 
     m_intNumberOfEvents < 10) 
    { 
     intFileDay = Int32.Parse(strLine); // extract day 

     // if event scheduled for specified day, 
     // store information 
     if (intFileDay == intChosenDay) 
     { 
      m_strData[ m_intNumberOfEvents, 0 ] = strLine; 
      m_strData[ m_intNumberOfEvents, 1 ] = 
       objInput.ReadLine(); 
      m_strData[ m_intNumberOfEvents, 2 ] = 
       objInput.ReadLine(); 
      m_strData[ m_intNumberOfEvents, 3 ] = 
       objInput.ReadLine(); 
      m_strData[ m_intNumberOfEvents, 4 ] = 
       objInput.ReadLine(); 
      m_intNumberOfEvents++; 
     } 
     else 
     { 
      // skip to next event in file 
      for (intLineNumbers = 0; intLineNumbers <= 3; 
       intLineNumbers++) 
       strLine = objInput.ReadLine(); 
     } 

     // read day of next event in file 
     strLine = objInput.ReadLine(); 

    } // end while 

    } // end method ExtractData 
+2

寫功能,一次解決一件事。 – 2013-04-26 21:40:25

+0

'我試圖擺脫這種方法的2維數組,ExtractData並使用列表替換它'你的2-dim數組是怎麼樣的?什麼是你的文件中的數據?你想要提取哪些數據?你的輸出清單應該如何? – I4V 2013-04-26 21:51:27

回答

1

所以,你有一個可變數目的事件,每個事件有5個,你想單獨存儲文本的「行」?創建一個類來表示每個事件數據,並創建它們的列表。

public class EventData { 
    public string Line1 { get; set; } 
    public string Line2 { get; set; } 
    public string Line3 { get; set; } 
    public string Line4 { get; set; } 
    public string Line5 { get; set; } 
} 

... 

var results = new List<EventData>(); 

// loop through lines in file 
while (objInput.Peek() > -1 && 
    m_intNumberOfEvents < 10) 
{ 
    intFileDay = Int32.Parse(strLine); // extract day 

    // if event scheduled for specified day, 
    // store information 
    if (intFileDay == intChosenDay) 
    { 
     var foo = new EventData(); 

     foo.Line1 = strLine; 
     foo.Line2 = objInput.ReadLine(); 
     foo.Line3 = objInput.ReadLine(); 
     foo.Line4 = objInput.ReadLine(); 
     foo.Line5 = objInput.ReadLine(); 

     results.Add(foo); 

     m_intNumberOfEvents++; 
    } 
    else 
    { 
     // skip to next event in file 
     for (intLineNumbers = 0; intLineNumbers <= 3; 
      intLineNumbers++) 
      strLine = objInput.ReadLine(); 
    } 

    // read day of next event in file 
    strLine = objInput.ReadLine(); 

} // end while 
+0

哇,就像那樣...如果你看看我以前的帖子。你可以看到我掙扎了多少。謝謝你的幫助Dylan。 – Jae 2013-04-26 21:54:25

0

必須重複Dylan Smith所說的;上課。

我不完全確定你要做什麼,但看起來你想要一系列每天都會發生的事件。如果是這樣,那麼一個班級確實最有意義。該類不僅會存儲這些字符串,還可以擁有越來越容易管理的數據(比如說事件發生的時間)。

真的,如果你看到自己陷入了這樣一個問題,你不僅需要一個變量來存儲某些關於某事的信息,還需要創建一個類或一個結構體。你稍後會感謝你。

0

我看到在這種情況下定義一個新類沒有意義。所有的字段都是字符串,並且在類中沒有方法或屬性。它只是一串字符串。使用:

var results = new List<string[]>(); 
... 
var lines = new string[5]; 

lines[0] = strLine; 
lines[1] = objInput.ReadLine(); 
lines[2] = objInput.ReadLine(); 
lines[3] = objInput.ReadLine(); 
lines[4] = objInput.ReadLine(); 

results.Add(lines);