如何随机排序DataTable.Select()结果

3

我可以使用Select()来完成这个任务吗?

如果在SQL中翻译,它会像这样:

select * from sometable where (somecondition) order by somefieldname desc, newid()
2个回答

7
var rand = new Random();    
var result = dt.AsEnumerable().OrderBy(r => rand.Next());

是的,这就是做法。在 T-SQL 中使用 NEWID() 进行排序以随机返回行是一种技巧,尽管它很有用。对于 DataTable.Select(),没有等效的技巧。 - Luke Girvin
@Gerald r 是 DataTable 中的一行(在此情况下,我们不需要进行排序)。 - Magnus
FYI - 我尝试使用这种方法,发现OrderBy在排序后会丢失记录。 - NotMe

1

那么我不能使用Select()方法进行排序吗? - Gerald Torres
我认为不行,你必须按照这里定义的方式对某个东西进行排序,可以是表名或表达式:http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression(v=vs.71).aspx。似乎没有办法像你在T-SQL示例中所做的那样创建随机值。 - Luke Girvin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接