Pessoal, em um post anterior sobre lista embaralhada (http://spokydev.blogspot.com/2009/09/embaralhando-uma-lista.html), o Caio Proiete (http://www.caioproiete.com) colocou uns codigos interessantes para embaralhar uma lista usando o LINQ. Vejamos então como ficará noso código.
A primeira opção é manter o Random, usando o OrderBy do LINQ com Lambda Expressions, algo assim:
public static IList<T> Shuffle<T>(this IList<T> list)
{
// -> Gerador de numeros ramdomicos.
var r = new Random();// -> Retorna a lista embaralhada, ordenando atraves do numero randomico
// e usando lambda.
return list.OrderBy(n => r.Next(list.Count)).ToList();
}
Mas este código pode ser mais exuto ainda, usando GUID (Globally Unique Identifier), vejamos:
public static IList<T> Shuffle<T>(this IList<T> list)
{
// -> Retorna a lista embaralhada baseada em uma GUID.
return list.OrderBy(n => Guid.NewGuid()).ToList();
}
Como a GUID é um identificador randomico, o OrderBy ordenará radomicamente também. Particularmente este ultimo metodo me agradou mais, por ser simples, curto e claro. A GUID também tem a tendencia natural a não se repetir!
Veja como ficaria o uso:
… A implementação:
Obrigado :)
Mais sobre GUID:
0 comentários:
Postar um comentário