gpt4 book ai didi

c# - 根据参数获取员工子集

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:13 26 4
gpt4 key购买 nike

我已经在存储过程中完成了带排序的分页。但是现在,我需要在 LINQ 中为以下对象执行相同的操作。在以下场景中实现排序和分页的最可读 LINQ 查询是什么?

代码

static  List<Employee> GetMyData(int pageIndex, int pageSize, out int itemCount, string sortField, string sortDirection )
{

Employee e1= new Employee(){EmpID = 1, EmpName = "E1"};
Employee e2= new Employee(){EmpID = 2, EmpName = "E2"};
Employee e3= new Employee(){EmpID = 3, EmpName = "E3"};
Employee e4= new Employee(){EmpID = 4, EmpName = "E4"};
Employee e5= new Employee(){EmpID = 5, EmpName = "E5"};
Employee e6= new Employee(){EmpID = 6, EmpName = "E6"};

List<Employee> employees = new List<Employee>();
employees.Add(e1);
employees.Add(e2);
employees.Add(e3);
employees.Add(e4);
employees.Add(e5);
employees.Add(e6);

itemCount = employees.Count;

//Get subset of employees based on paging and sorting parameters
//Sorting can be based on EmpID or EmpName
List<Employee> currentPageEmployees = null;
return currentPageEmployees;
}

调用方法

        int count = 0;
List<Employee> e = GetMyData(0, 2, out count, "EmpID", "descending");

最佳答案

您可以使用自定义选择器将 sortField 解析为 Employee 类型的适当属性。然后对于排序方向,我假设 sortDirection 是升序或降序 - 如果是,那么 bool 可能更好?

举个例子:

var selector = new Func<Employee, object>(e => e.GetType().GetProperty(sortField).GetValue(e, null));
var query = sortDirection.Equals("descending", StringComparison.OrdinalIgnoreCase)
? employees.OrderByDescending(selector)
: employees.OrderBy(selector);

List<Employee> currentPageEmployees = query
.Skip(pageIndex * pageSize)
.Take(pageSize)
.ToList();

有一些 Dynamic Linq 扩展可以使内容更易读。

编辑:移除类型转换

关于c# - 根据参数获取员工子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17986522/

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