2016-07-31 5 views
0

私はすべてのテキストファイルにいくつかのテキストベースのテキストをいくつか含んでいます。すべてのデータがリンクされているので、テキストファイルの1つの行は、別のテキストファイルの行1とリンクされています。私は1年(テキストファイルの1つ)を検索し、その年にリンクされたすべてのデータをコンソールに出力する必要があります。要件の一部として、テキストファイルは別々のままでなければなりません。私はこれで行くことをどうお勧めしますか? ここまで私がこれまで持っていたことがあります。複数のテキストファイルからデータを検索する

case 8: 
        Console.WriteLine("Year Month WS1_AF WS1_Rain WS1_Sun WS1_TMax WS1_Tmin"); 
        Console.WriteLine(); 
        Console.WriteLine(); 
        string[][] Ws1Data = new[] 
    { 
    File.ReadAllLines(@"\A2Alg\files\Year.txt"), 
    File.ReadAllLines(@"\A2Alg\files\Month.txt"), 
    File.ReadAllLines(@"\A2Alg\files\WS1_AF.txt"), 
    File.ReadAllLines(@"\A2Alg\files\WS1_Rain.txt"), 
    File.ReadAllLines(@"\A2Alg\files\WS1_Sun.txt"), 
    File.ReadAllLines(@"\A2Alg\files\WS1_TMax.txt"), 
    File.ReadAllLines(@"\A2Alg\files\WS1_TMin.txt"), 



    }; 
        int nRows = Ws1Data[0].Length; 
        int nColumns = Ws1Data.Length; 
        string tempString = " "; 
        for (int i = 0; i < nRows; i++) 
        { 
         tempString = " "; 
         for (int j = 0; j < nColumns; j++) 
         { 
          tempString = tempString + Ws1Data[j][i]; 
          tempString = tempString + " "; 
         } 
         Console.WriteLine(tempString); 
        } 

は、上記のコードは、すべてのファイルを読み込み、1つの配列にそれをすべて出力し、それは動作しますが、私は、出力後、その年にリンクされているデータを検索し、年にする方法が必要です。

+0

その年は配列の最初の列 'Ws1Data [j] [0]'にあります。それは正しいのですか? –

+0

@MachineLearningはい – GT96

答えて

0

これは、年単位でフィルタリングする方法です。あなたは、出力コードから転置行列

var filter = Ws1Data.Select((row,i) => row.Where((x,j) => Ws1Data[0][j] == ("2016")).ToArray()).ToArray(); 

で作業している場合

var filter = Ws1Data.Where(row => row[0] == "2016").ToArray(); 

以下、これは交換

nRows = filter[0].Length; 
nColumns = filter.Length; 
for (int i = 0; i < nRows; i++) 
{ 
    tempString = " "; 
    for (int j = 0; j < nColumns; j++) 
    { 
     tempString = tempString + filter[j][i]; 
     tempString = tempString + " "; 
    } 
    Console.WriteLine(tempString); 
} 

だろうこれは、完全なデモです

  string [][] Ws1Data = new string[3][]; 
      Ws1Data[0] = new string[3] { "2015", "2016", "2016" }; 
      Ws1Data[1] = new string[3] { "5asda", "6asda","7asa" }; 
      Ws1Data[2] = new string[3] { "5sdfdf", "6asda","6dsfsdf" }; 
      var filter = Ws1Data.Select((row,i) => row.Where((x,j) => Ws1Data[0][j] == ("2016")).ToArray()).ToArray(); 

      int nRows = Ws1Data[0].Length; 
      int nColumns = Ws1Data.Length; 
      string tempString = " "; 
      for (int i = 0; i < nRows; i++) 
      { 
       tempString = " "; 
       for (int j = 0; j < nColumns; j++) 
       { 
        tempString = tempString + Ws1Data[j][i]; 
        tempString = tempString + " "; 
       } 
       Console.WriteLine(tempString); 
      } 
      Console.WriteLine("Filtered by 2016"); 
      nRows = filter[0].Length; 
      nColumns = filter.Length; 
      for (int i = 0; i < nRows; i++) 
      { 
       tempString = " "; 
       for (int j = 0; j < nColumns; j++) 
       { 
        tempString = tempString + filter[j][i]; 
        tempString = tempString + " "; 
       } 
       Console.WriteLine(tempString); 
      } 

      Console.ReadLine(); 
+0

文字列[] []にはコードをコードに実装するときの定義が含まれていません – GT96

+0

ソートされていますか? – GT96

+0

どういう意味ですか? Ws1Dataの代わりにfilterを使用すると、1年しか表示できません:何が問題なのですか?説明してください、ありがとう –

関連する問題