/// <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()); }
/// <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)); }