usar principiantes para metodos mayor instrucciones igual diferente consultas como avanzadas linq-to-sql lambda

principiantes - Método de extensión LINQ to SQL para ordenar y paginar



mayor o igual linq (2)

No estoy exactamente seguro de lo que estás preguntando, pero creo que es algo que he investigado a mí mismo. Si desea saber cómo ordenar dinámicamente los resultados en función de una cadena, en lugar de una expresión LINQ adecuada, entonces está de suerte.

Scott Guthrie publicó un gran artículo sobre ese mismo tema. Hace referencia a un archivo de Microsoft que amplía cualquier objeto IQueryable para admitir la ordenación dinámica. C # Dynamic Query Library (incluida en el directorio / LinqSamples / DynamicQuery) . Simplemente agregue la página a su carpeta App_Code e incluya "Usando System.Linq.Dynamic" en su proyecto y podrá usar la siguiente sintaxis:

myUsers = myUsers.OrderBy("LastName");

¡Espero que esto ayude!

He encontrado un método de extensión que maneja la clasificación y la paginación para LINQ . Si bien esto funciona bien, estoy tratando de ver si hay otras formas en que puedo usar esto.

En la actualidad, el código para el método de extensión es el siguiente:

public static IQueryable<T> Page<T, TResult>( this IQueryable<T> obj, int page, int pageSize, System.Linq.Expressions.Expression<Func<T, TResult>> keySelector, bool asc, out int rowsCount) { rowsCount = obj.Count(); int innerRows = (page - 1) * pageSize; if (asc) return obj.OrderBy(keySelector).Skip(innerRows).Take(pageSize).AsQueryable(); else return obj.OrderByDescending(keySelector).Skip(innerRows).Take(pageSize).AsQueryable(); }

El método toma una expresión, que se basa en el tipo.

En mi clase de Dealer, tengo un método GetDealers, que esencialmente llama esto, es decir,

db.User.Page(1, 2, p => p.User.UserProperty.Name, true, out rowCount)

Sin embargo, desde el punto de vista de la presentación, no sé o puedo acceder a la expresión anterior, por ejemplo

ListView1.DataSource = users.GetDealers("SortColumn", pageNo, pageSize, out rowCount, bool asc); ListView1.DataBind();

La única forma es tener una instrucción switch en mi método GetDealers que luego se convertiría a la expresión. ¿Hay alguna manera de eludir esto o es correcto este método?


Si está buscando un método de extensión para trabajar en todos los tipos

public static class SortingAndPagingHelper { /// <summary> /// Returns the list of items of type on which method called /// </summary> /// <typeparam name="TSource">This helper can be invoked on IEnumerable type.</typeparam> /// <param name="source">instance on which this helper is invoked.</param> /// <param name="sortingModal">Page no</param> /// <returns>List of items after query being executed on</returns> public static IEnumerable<TSource> SortingAndPaging<TSource>(this IEnumerable<TSource> source, SortingAndPagingInfo sortingModal) { // Gets the coloumn name that sorting to be done o`enter code here`n PropertyInfo propertyInfo = source.GetType().GetGenericArguments()[0].GetProperty(sortingModal.SortColumnName); // sorts by ascending if sort criteria is Ascending otherwise sorts descending return sortingModal.SortOrder == "Ascending" ? source.OrderByDescending(x => propertyInfo.GetValue(x, null)).Skip(sortingModal.PageSelected * sortingModal.PageSize).Take(sortingModal.PageSize) : source.OrderBy(x => propertyInfo.GetValue(x, null)).Skip(sortingModal.PageSelected * sortingModal.PageSize).Take(sortingModal.PageSize); } }

DbContext dbContext = new DbContext(); dbContext.rainingSessions.Where(x => x.RegistrationDeadline > DateTime.Now) .SortingAndPaging(sortAndPagingInfo).ToList()