为什么可以这样? .OrderBy(a => System.Guid.NewGuid())

stevenjin 2017-06-09 11:00:08
最近看到这样一种用法很是疑惑,
System.Guid.NewGuid()生成的是一个32位的字符串,
与OrderBy接收的不符啊。为什么可以这样呢

var album = db.Albumn
.OrderBy(a => System.Guid.NewGuid())
.First();
album.Price *= 0.5m;
...全文
685 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
newtee 2017-06-09
  • 打赏
  • 举报
回复
随机排序取第一个
stevenjin 2017-06-09
  • 打赏
  • 举报
回复
还是不明白,OrderBy总归得接收一个具体字段啊, 他那样子生成的一串随机字符串呢。
正怒月神 2017-06-09
  • 打赏
  • 举报
回复
OrderBy(a => System.Guid.NewGuid()) 意思就是随机排序
  • 打赏
  • 举报
回复
a => System.Guid.NewGuid() =》匿名委托而已,只不过没有指定a的排序字段,还可以这样写呢 a => true。
xuzuning 2017-06-09
  • 打赏
  • 举报
回复
引用 3 楼 stevenjin 的回复:
还是不明白,OrderBy总归得接收一个具体字段啊, 他那样子生成的一串随机字符串呢。
不对!OrderBy 接受的是一个序列,并将对这个序列排序的结果关联到宿主
stevenjin 2017-06-09
  • 打赏
  • 举报
回复
老大说的好懂,可我去数据库试了下, order by 只接受表中存在的字段名,否则 报错 在这里为什么就能接收随机字符排序了呢,还是有疑惑呀
正怒月神 2017-06-09
  • 打赏
  • 举报
回复
引用 3 楼 stevenjin 的回复:
他那样子生成的一串随机字符串呢。
System.Guid.NewGuid()生成了字符串啊。 然后order会按照字符串的每个 char来排序。 System.Guid.NewGuid()生成出来每次都不一样。所以就确保了顺序肯定打乱

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧