2011-07-26 10 views
1

可能性の重複:
Randomize a List<T> in C#どのように文字列のリストをシャッフルできますか?

私は私が働いて自分のコードを持っていたと思ったが、今ではないようです。ここで私が持っているものです。

public class NoteDetail 
{ 
    public NoteDetail() 
    { 
     _noteDetails = new List<string>(); 
    } 
    public IList<string> NoteDetails { get { return _noteDetails; } } 
    private readonly List<string> _noteDetails; 
} 

私はこのように私の詳細を移入:

 var noteDetail = new NoteDetail(); 
     noteDetail.NoteDetails.Add("aaa"); 
     noteDetail.NoteDetails.Add("bbb"); 
     noteDetail.NoteDetails.Add("ccc"); 

今、私は、私はこれが日常使用シャッフルしたい:

public static void ShuffleGenericList<T>(IList<T> list) 
    { 
     //generate a Random instance 
     var rnd = new Random(); 
     //get the count of items in the list 
     var i = list.Count(); 
     //do we have a reference type or a value type 
     T val = default(T); 

     //we will loop through the list backwards 
     while (i >= 1) 
     { 
      //decrement our counter 
      i--; 
      //grab the next random item from the list 
      var nextIndex = rnd.Next(i, list.Count()); 
      val = list[nextIndex]; 
      //start swapping values 
      list[nextIndex] = list[i]; 
      list[i] = val; 
     } 
    } 

私の問題は、私はということですどのようにシャッフルを行うか分からない。私は、次のことを試してみましたが、それは与える:

エラー237引数1:「にSystem.Collections.Generic.IList」から変換することはできません「System.Collections.Generic.IList < .Storage.Models.NoteDetail>」

Sort.ShuffleGenericList<NoteDetail>(noteDetail.NoteDetails); 

誰もが私が間違っているのかを見ることができます。それはすべて私には大丈夫見て、私は

+0

それを行う方法が間違っているという話題はありませんか? – Mehrdad

+0

フレームワークに魔法をさせてください:Sort.ShuffleGenericList(noteDetail.NoteDetails); – Yahia

答えて

0

一般的な方法をパラメータ化するのに間違ったタイプを使用しています。

Sort.ShuffleGenericList(noteDetail.NoteDetails); 

以上の明示的な(しかし、不必要な):

Sort.ShuffleGenericList<string>(noteDetail.NoteDetails); 

あなたはむしろstringよりも、タイプとしてNoteDetailを集めて - 動作しないこと。

2

:-(このエラーを取得する必要がありますなぜ、この私は、あなたが変更する必要があります見ることができない。noteDetail.NoteDetailsがある

Sort.ShuffleGenericList<string>(noteDetail.NoteDetails); 

ので:

Sort.ShuffleGenericList<NoteDetail>(noteDetail.NoteDetails); 

List<string>List<NoteDetail>

+0

バーはそれに私を打つ。 +1 –

+1

または単純に 'Sort.ShuffleGenericList(noteDetail.NoteDetails)' – porges

0

私はコードをとりVSに投げました。以下のようにいくつかの小さな変更を加えても大丈夫です:

関連する問題