gpt4 book ai didi

linq-to-sql - LINQ to SQL 用于排序和分页的扩展方法

转载 作者:行者123 更新时间:2023-12-04 03:09:05 24 4
gpt4 key购买 nike

我找到了一种处理 LINQ 的排序和分页的扩展方法。 .虽然这很有效,但我想看看是否还有其他方法可以使用它。

目前,代码为extension method如下:

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

该方法接受一个基于类型的表达式。

在我的 Dealer 类中,我有一个 GetDealers 方法,它基本上调用了这个方法,
IE。
db.User.Page(1, 2, p => p.User.UserProperty.Name, true, out rowCount)

但是,从事物的呈现方面来看,我不知道或无法访问上述表达式,例如
ListView1.DataSource = users.GetDealers("SortColumn", pageNo, pageSize, out rowCount, bool asc);
ListView1.DataBind();

唯一的方法是在我的 GetDealers 方法中有一个 switch 语句,然后将其转换为表达式。有没有办法绕过这个,或者这个方法可以吗?

最佳答案

我不确定你在问什么,但我相信这是我自己研究过的。如果您想知道如何根据字符串而不是正确的 LINQ 表达式对结果进行动态排序,那么您很幸运。

Scott Guthrie 发表了一篇很棒的文章 article在那个主题上。它引用了一个 Microsoft 文件,该文件扩展了任何 IQueryable对象支持动态排序。
C# Dynamic Query Library (included in the \LinqSamples\DynamicQuery directory) .只需将该页面添加到您的 App_Code文件夹并在您的项目中包含“Using System.Linq.Dynamic”,您将能够使用以下语法:

myUsers = myUsers.OrderBy("LastName");

我希望这有帮助!

关于linq-to-sql - LINQ to SQL 用于排序和分页的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/543955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com