2012-04-17 11 views
0

Ok、音楽コンテストのイベント主催者を作成するプロジェクト。基本的に私は約400のエントリーのリストのような入力データを取って、部屋番号とタイプ別にいくつかの別々のExcelシートに出力します。問題は、アレイにイベントを割り当てるとき(各部屋ごとに別々の配列があり、すべての配列がリストに含まれています)、同じタイムスロットで伴奏者がダブル予約されているかどうかを確認して修正する必要があります。または、本質的に、2つの異なる配列が配列[i]の同じ伴奏値を持つ場合アレイでのダブル予約の確認

アイデア?私は経験のビットのみを教え自己だけど、うまく説明しようとしてください

private void assignEvents() 
    { 
    // assign every event in order 
    // check accompanists for no double-books 
     foreach (Event[] room in roomList) 
     { 
      int i = 0; 
      foreach (Event ev in eventList) 
      { 
       if (ev.Type == room[0].Type) 
       { 
        room[i] = ev; 
        i++; 
       } 
      } 
     } 
Tejsが示唆のようにあなたは、LINQでそれを行うことができますが、あなたが主催者を設計しているので、私は別のルートを行くだろうし、あなたはおそらく意志
+1

なぜを取得するためにLINQを使用することができます複合ルーム+時間キーからLINQ GroupByクエリを実行し、カウントが1より大きいすべてのグループを見つけますか?それはあなたが二重の予約をしているかどうかを教えてくれるでしょう。 – Tejs

+0

@ Josiah1888:どうぞよろしくお願いいたします。また、あなたがStackOverflowを初めて使用しているので、あなたは良い回答をupvoteでき、Answerの隣にあるチェックマークをチェックすることで一番助けになった答えを受け入れることができます。このサイトでは、upv​​oteまたは受け入れられた答えは「感謝」としてカウントされます。 –

答えて

0

(例えば、伴奏者のスケジュールを表示するために)何らかの余分な情報が必要です。私はすべての伴奏者のリストをソートした配列(基本的にはスケジュール)を並べています。予約中の各伴奏者のコンフリクト(予約アレイ内)があるかどうかを確認する機能を持つことができます。もしそうでなければ、予約を伴奏者のスケジュールに追加してください。

0

If私はあなたを正しく理解しているので、列ごとの値を比較する必要があります。私はあなたの実際のコレクション型からそれを導出することにより、独自のRoomListコレクションクラスを作成し、それを列

public class RoomList : List<Event[]> 
{ 
    public IEnumerable<Event> TimeSlot(int columnIndex) 
    { 
     foreach (Event[] events in this) { 
      if (events != null && columnIndex < events.Length) { 
       yield return events[columnIndex]; 
      } 
     } 
    } 
} 

を反復処理する可能性を追加することをお勧め次に、あなたは二重の予約

RoomList roomList = new RoomList(); 
// ... 
for (int slot = 0; slot < roomList[0].Length; slot++) { 
    var doubleBooked = roomList.TimeSlot(slot) 
     .GroupBy(e => e.Type) 
     .Where(g => g.Count() > 1); 
    if (doubleBooked.Any()) { 
     Console.WriteLine("Doubly booked accompanists in slot {0}", slot); 
     foreach (var accompanistGroup in doubleBooked) { 
      Console.WriteLine(" {0}", accompanistGroup.Key); 
     } 
    } 
} 
関連する問題