EF架构使用随机排序
c#当中,可以用Random类来获取随机数
EF当中,我们写Linq时,抑或是采用Linq的扩展方法时,发现都没有随机排序的方法,这就要求我们自己去扩展了
引用自http://www.cnblogs.com/lori/p/3166899.html
/// <summary> /// sql函数的扩展类 /// </summary> public static class SqlFunctionExtensions { #region 功能方法 /// <summary> /// 在linq to entity中使用SqlServer.NEWID函数 /// </summary> [System.Data.Objects.DataClasses.EdmFunction("SqlServer", "NEWID")] public static Guid NewId() { return Guid.NewGuid(); } #endregion #region 扩展方法 /// <summary> /// 随机排序扩展方法 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="source"></param> /// <returns></returns> public static IQueryable<T> OrderByNewId<T>(this IEnumerable<T> source) { return source.AsQueryable().OrderBy(d => NewId()); } #endregion }
但是,这个方法方法有个缺点,如果是Linq查询未加载的IQueryable集合,则无效,必须先加载(用ToList或ToArray)后再随机排序