我编写了一个 LINQ to Entities,它使用了以下 OrderBy:
.OrderBy(i => Guid.NewGuid())
上面的代码随机化了数据集的排序,因此每次运行此代码都会产生不同的排序。
但是,如果我执行以下任何操作,数据集不是随机的,并且对于所有 3 个 OrderBy 都是完全相同的,请参见下文:
.OrderBy(i => new Guid("5fd3e5e7-b172-42f5-a4dd-da4212201a31"))
.OrderBy(i => new Guid("beb7345c-1421-48e0-b177-51b2bb065214"))
Guid g = Guid.NewGuid();
.OrderBy(i => g)
您可以看到上面的 3 个 OrderBy 使用不同的 Guid,那么为什么它们产生相同的订单?为什么每次运行这段代码时 Guid.NewGuid() 都会随机化列表,但其他 3 个 OrderBy 语句每次都会产生相同的结果?
我的问题是,我需要将一个值传递给一个函数,该函数在 LINQ to Entities 数据集中用于根据值随机化结果,但是我还需要能够传递相同的值并检索相同的顺序的随机性。
谢谢。
最佳答案
当您拥有 Guid.NewGuid() 时的这种行为是在 Entity Framework 中设计的,它模仿 SQL 的 ORDER BY NEWID(),以允许随机排序。当您指定一个常量 Guid 时,它仅按此常量值排序。
关于c# - Guid.NewGuid() 在 LINQ to Entities 中做什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41487665/