当前位置:  开发笔记 > 编程语言 > 正文

在c#中随机重新排列项目列表的最佳方法是什么?

如何解决《在c#中随机重新排列项目列表的最佳方法是什么?》经验,为你挑选了2个好方法。

我有一个对象列表,我想在每个请求上随机重新排序.这样做的最佳方式是什么?



1> Gant..:

某种Knuth-Fisher-Yates shuffle算法怎么样?

for (int i = cards.Length - 1; i > 0; i--)
{
    int n = rand.Next(i + 1);
    Swap(ref cards[i], ref cards[n]);
}

代码取自Coding Horror.这也是关于人们经常如何做错的推荐读物.



2> BFree..:

看看这个酷炫的Linq做法:

public class Employee
{
    public int Id
    {
        get;
        set;
    }
    public string Name
    {
        get;
        set;
    }
}

填充列表:

    List list = new List();

    list.Add(new Employee { Id = 1, Name = "Davolio Nancy" });
    list.Add(new Employee { Id = 2, Name = "Fuller Andrew" });
    list.Add(new Employee { Id = 3, Name = "Leverling Janet" });
    list.Add(new Employee { Id = 4, Name = "Peacock Margaret" });
    list.Add(new Employee { Id = 5, Name = "Buchanan Steven" });
    list.Add(new Employee { Id = 6, Name = "Suyama Michael" });
    list.Add(new Employee { Id = 7, Name = "King Robert" });
    list.Add(new Employee { Id = 8, Name = "Callahan Laura" });
    list.Add(new Employee { Id = 9, Name = "Dodsworth Anne" });

然后排序:

    list = list.OrderBy(emp => Guid.NewGuid()).ToList();

信用

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有