2012-03-27 28 views
2

をループすると間違って何をしていますので、私は2つのリストは、私は私のC#は[OK]を

List<string> playlists 
List<string> sync 

を持っており、プレイリストの内容は、3つの文字列

{"more and you", "and us", "more"} 

で、同期の内容はこうです言うことができます

{"more and you-20120312", "more and you-20120314", "more and you-20120313", "and us-20120313", "and us-20120314", "more-20120314", "more-20120313", "more-20120312"} 

は基本的に私は何をしたいプレイリストを介してすべてのループをループし、関連する同期を見つけるとOそれらを印刷しますUTと、彼らは私のコードは、これまで

 StringBuilder sb = new StringBuilder(); 
     sb.Append("<h2>Playlist Information</h2>"); 
     foreach (string play in playlists) 
     { 
      int counter = 0; 
      foreach (string s in sync) 
      { 
       if (s.StartsWith(play)) 
       { 
        sb.Append("<p class=\"good\">" + s + "</p>"); 
        counter++; 
       } 
      } 
     } 

あるので、私は最終的なHTMLはこの

<h2>Playlist Information</h2> 
<p class=\"good\">more and you-20120312</p> 
<p class=\"good\">more and you-20120313</p> 
<p class=\"good\">more and you-20120314</p> 
<p class=\"bad\">and us-20120313</p> 
<p class=\"bad\">and us-20120314</p> 
<p class=\"good\">more-20120312</p> 
<p class=\"good\">more-20120313</p> 
<p class=\"good\">more-20120314</p> 

に悪いように見えるようにしたいそうでない場合、私はここでそれらをdifferently..So色付けしたい3である必要がどのように私のコードでこれを達成するためのアイデア

+0

出力がコードの記述と一致していないようです。提供されたコードに「不良」クラスの出力がありません。 –

+0

はい、私はまだそれを書いていません。なぜなら、アイテムの数や正確に3の数をチェックする方法を知らなかったからです。私の質問が何であるか.........私のスニペットを完成させるために。 –

+0

@SergeySirotkin彼は、ここから続ける方法を知らない。彼はそれが働いていないことを知っている。 – Servy

答えて

1

これは非常に簡単です - ちょうどカウンタの代わりにあなたのチェックの間に別のリストを構築し、次にサイズを確認してください"innerlist"。私はそれがcurrentSyncSet呼ば:

static void Main(string[] args) 
    { 
     List<string> playlists = new List<string>(){"more and you", "and us", "more"}; 
     List<string> sync = new List<string>() { "more and you-20120312", "more and you-20120314", "more and you-20120313", "and us-20120313", "and us-20120314", "more-20120314", "more-20120313", "more-20120312" }; 

     StringBuilder sb = new StringBuilder(); 
     sb.Append("<h2>Playlist Information</h2>\r\n"); 

     HashSet<string> finalSyncResult = new HashSet<string>(); 

     foreach (string play in playlists) 
     { 
      List<string> currentSyncSet = new List<string>(); 

      foreach (string s in sync) 
      { 
       if (s.StartsWith(play)) 
       { 
        currentSyncSet.Add(s); 
       } 
      } 

      foreach (var syncset in currentSyncSet) 
      { 
       if (currentSyncSet.Count < 3) 
       { 
        finalSyncResult.Add("<p class=\"bad\">" + syncset + "</p>"); 
       } 
       else 
       { 
        finalSyncResult.Add("<p class=\"good\">" + syncset + "</p>"); 
       } 
      } 
     } 

     foreach (var result in finalSyncResult) 
     { 
      sb.Append(result + "\r\n"); 
     } 

     Console.WriteLine(sb.ToString()); 

     Console.ReadKey(); 
    } 

出力は次のとおりです。

<h2>Playlist Information</h2> 
<p class="good">more and you-20120312</p> 
<p class="good">more and you-20120314</p> 
<p class="good">more and you-20120313</p> 
<p class="bad">and us-20120313</p> 
<p class="bad">and us-20120314</p> 
<p class="good">more-20120314</p> 
<p class="good">more-20120313</p> 
<p class="good">more-20120312</p> 

挨拶

アップデート1: SRY、最後の時間、私は忘れて、あなたがしたくないことエントリが重複しています。そのため、このソリューションではHashSetを追加しました。