C# 如何使用保存的guid中的linq随机化列表?

C# 如何使用保存的guid中的linq随机化列表?,c#,linq,cookies,C#,Linq,Cookies,我正在从cookie中读取guid,以使用linq使列表随机化,如果cookie为null,我将生成新guid并将其保存到cookie中,然后使用它,但列表不会随机化 为什么? 您在OrderBy语句中使用了相同的值,这就是您以相同顺序获取项目的原因。 您可以使用类似以下内容洗牌列表:questions.OrderBy(q=>Guid.NewGuid()),但您希望为后续请求保留相同的种子值,因此您应该使用Random类进行此操作。我认为您可能希望存储种子而不是Guid,并使用类似于(工作示例)

我正在从cookie中读取guid,以使用linq使列表随机化,如果cookie为null,我将生成新guid并将其保存到cookie中,然后使用它,但列表不会随机化

为什么?


您在
OrderBy
语句中使用了相同的值,这就是您以相同顺序获取项目的原因。
您可以使用类似以下内容洗牌列表:
questions.OrderBy(q=>Guid.NewGuid())
,但您希望为后续请求保留相同的种子值,因此您应该使用
Random
类进行此操作。

我认为您可能希望存储种子而不是Guid,并使用类似于(工作示例)的代码:


为什么使用cookie存储Guid?@LucianBumb那么还有什么?
var questions = IZBSC.UI.Components.Utility.GetQuestionBank(Model.ExamId);
var random = "";
if (Request.Cookies["Rnd"] == null)
{
    random = Guid.NewGuid().ToString();
    HttpCookie cookie = new HttpCookie("Rnd", random.ToString())
    {
        HttpOnly = true,
        Expires = DateTime.Now.AddDays(1)
    };
    Response.Cookies.Add(cookie);
}
else
{
    random= Request.Cookies["Rnd"].Value;
}

@foreach (var question in questions.OrderBy(q =>random).Take(questions.Count).ToList())
{...}
var list = new List<int>(){1, 2, 3, 4, 5, 6, 7, 8};

var seed = 3; // CREATE THIS RANDOM NUMBER AND STORE IT INSTEAD OF THE GUID 

var rnd = new Random(seed);

var ordered = list.OrderBy(r => rnd.Next());

foreach(var item in ordered)
{
    Console.WriteLine(item);
}
var questions = IZBSC.UI.Components.Utility.GetQuestionBank(Model.ExamId);
var seed;
if (Request.Cookies["Rnd"] == null)
{
    seed = new Random().Next();
    HttpCookie cookie = new HttpCookie("Rnd", seed.ToString())
    {
        HttpOnly = true,
        Expires = DateTime.Now.AddDays(1)
    };
    Response.Cookies.Add(cookie);
}
else
{
    seed = int.Parse(Request.Cookies["Rnd"].Value);
}

var random = new Random(seed);

@foreach (var question in questions.OrderBy(q =>random.Next()))
{...}