2011-07-26 2 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>, a는 List<NoteDetail>

당신은 당신의 일반적인 방법을 변수화하는 잘못된 유형을 사용하는
+0

Bah는 나를 때렸다. +1 –

+1

또는 단순히'Sort.ShuffleGenericList (noteDetail.NoteDetails)' – porges

0

나는 코드를 가져 와서 VS로 던집니다. 아래의 몇 가지 수정 사항을 통해 약간의 수정이 가능합니다.

관련 문제