/// <summary>
 ///  返回序列的唯一元素;如果该序列并非恰好包含一个元素,则会引发异常。
 /// </summary>
 /// <typeparam name="T">表实体类型</typeparam>
 /// <param name="queryable">查询对象</param>
 /// <returns>T</returns>
 public static T Single <T>(this  Queryable <T> queryable)
 {
     if (queryable.OrderByValue.IsNullOrEmpty())
     {
         queryable.OrderByValue = "now()";
     }
     queryable.Skip(0);
     queryable.Take(1);
     return(queryable.ToList().Single());
 }
        /// <summary>
        ///  返回序列中的第一个元素。
        /// </summary>
        /// <typeparam name="T">表实体类型</typeparam>
        /// <param name="queryable">查询对象</param>
        /// <returns>T</returns>
        public static T First <T>(this  Queryable <T> queryable)
        {
            if (queryable.OrderByValue.IsNullOrEmpty())
            {
                queryable.OrderByValue = "now()";
            }
            queryable.Skip(0);
            queryable.Take(1);
            var reval = queryable.ToList();

            return(reval.First());
        }
        /// <summary>
        ///   返回序列中的第一个元素,如果序列为NULL返回default(T)
        /// </summary>
        /// <typeparam name="T">表实体类型</typeparam>
        /// <param name="queryable">查询对象</param>
        /// <returns>T</returns>
        public static T FirstOrDefault <T>(this  Queryable <T> queryable)
        {
            if (queryable.OrderByValue.IsNullOrEmpty())
            {
                queryable.OrderByValue = "now()";
            }
            queryable.Skip(0);
            queryable.Take(1);
            var reval = queryable.ToList();

            if (reval == null || reval.Count == 0)
            {
                return(default(T));
            }
            return(reval.First());
        }
Esempio n. 4
0
        /// <summary>
        /// 专门用于分页控件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="allItems"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public static PagedList <T> ToPagedList <T>(this Queryable <T> allItems, int pageIndex, int pageSize)
        {
            if (pageIndex < 1)
            {
                pageIndex = 1;
            }
            var itemIndex      = (pageIndex - 1) * pageSize;
            var totalItemCount = allItems.Count();

            while (totalItemCount <= itemIndex && pageIndex > 1)
            {
                itemIndex = (--pageIndex - 1) * pageSize;
            }
            var pageOfItems = allItems.Skip(itemIndex).Take(pageSize).ToList();

            return(new PagedList <T>(pageOfItems, pageIndex, pageSize, totalItemCount));
        }