随机化实体框架查询结果

Mil*_*lox 5 asp.net entity-framework

下午好,

我有一个使用 linqdatasource + 实体框架 iqueryable 查询填充的列表视图。

该查询使用如下所示的 take(t-sql 上的 top):

context.Categories().OrderBy(c=>c.Name).Take(20);
Run Code Online (Sandbox Code Playgroud)

它为我提供了我想要按名称排序的 20 条记录。

现在我想按随机顺序显示这 20 条记录。完成此任务的最佳方法是什么?

Mil*_*lox 2

事实证明,使用扩展方法非常简单,首先按名称排序,然后调用 Take(T-sql 上的顶部)并稍后进行随机化

        context.Categories().OrderByName().Take(20).OrderByRandom();


        public static IQueryable<Category> OrderByName(this IQueryable<Category> query)
        {
                return from c in query
                        orderby c.Name
                        select c;
        }



        public static IQueryable<T> OrderByRandom<T>(this IQueryable<T> query)
        {
                return (from q in query
                        orderby Guid.NewGuid()
                        select q);
        }
Run Code Online (Sandbox Code Playgroud)