2016-11-19 7 views
0

このメソッドが呼び出されたときに、オブジェクトのリストからランダムな文字列IDを取得しようとしていますので、呼び出すときにそのIDの重複を取得しませんこのメソッドを再度実行します。私は文字列のリストでそれを行う方法を知っていますが、私はあなたがリストにオブジェクトを持っているときにそれを行う方法を知らない。c#オブジェクトのリストに重複のないランダムな文字列

私はこのようなことを試みますが、動作しません。

public string RandomHotelID() 
    { 
     Random gen = new Random(); 
     string Id; 
     foreach(Hotels hotel in LHotels) 
     { 
      int findex = gen.Next(0, LHotels.Count); 
      Id = hotel.HotelId[findex]; 

     } 

     return Id; 
    } 

答えて

0

あなたは、foreachループを必要としない、とここに理由です:

//Pseudocode of what you want 
i <- generate random number between 0 and the number of Hotels 
return the hotel id string of the hotel at i 

お知らせ、無ループ関与が。

(ノート、私はランダム性の問題を回避するためにプライベートインスタンス変数としてランダムに構築)というんコード:

class RandomHotelId { 
    Random r = new Random(); 
    public string RandomHotelID() 
    { 
     return LHotels[r.next(0, LHotels.Count)].HotelId; 
    } 
} 
+0

がどのように重複したIDを取得避けるために、これを修正するのでしょうか? –

+0

あなたは何らかのコレクションですでに取得されたIDを追跡し、 'while(nextValueはコレクションにない)nextValue < - 別の値を得る ' –

+0

ああk、チップのために大変ありがとう –

関連する問題