我编写了一个 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/