LINQ方法获取列表中两个索引之间的项

本文关键字:两个 索引 之间 获取 方法 列表 LINQ | 更新日期: 2023-09-27 17:54:56

我有一个Employee对象列表。我只需要在两个索引之间选择两个雇员对象(基于开始和结束变量)。下面的代码工作良好,但它不是在LINQ。对于这个目的,最好的LINQ代码是什么?

注意:我正在寻找Method Chain方法

public static class DatabaseSimulator
{
    public static List<Employee> GetData(string name, int index, int pageSize)
    {
        List<Employee> searchResult = new List<Employee>();
        List<Employee> employeesSource = SearchEmployees(name);
        int start = ((index - 1) * pageSize)  + 1;
        int end = (index * pageSize);
        for (int i = start; i <= end; i++)
        {
            if (searchResult != null)
            {
                int listCount = employeesSource.Count;
                for (int x = 0; x < listCount; x++)
                {
                    if (x == i)
                    {
                        searchResult.Add(employeesSource[x]);
                        break;
                    }
                }
            }
        }
        return searchResult;
    }

    private static List<Employee> SearchEmployees(string name)
    {
        List<Employee> employees = GetEmployees();
        return employees.Where(r => r.Name == name).ToList();
    }
    private static List<Employee> GetEmployees()
    {
        List<Employee> employees = new List<Employee>();
        int i = 0;
        for (i = 0; i <= 100; i++)
        {
            Employee emp = new Employee();
            emp.EmpID = i;
            if (i % 2 == 0)
            {
                emp.Name = "Divisible by 2";
            }
            else if  (i % 3 == 0)
            {
                emp.Name = "Divisible by 3";
            }
            else if (i % 5 == 0)
            {
                emp.Name = "Divisible by 5";
            }
            else if (i % 7 == 0)
            {
                emp.Name = "Divisible by 7";
            }
            else 
            {
                emp.Name = "Other -- "+ i.ToString();
            }
            employees.Add(emp);
        }
        return employees;
    }
}

List<Employee> searchResult = DatabaseSimulator.GetData("Divisible by 2", 2, 2);

LINQ方法获取列表中两个索引之间的项

可以使用list.Skip(startIndex).Take(endIndex - startIndex)结构

,

startIndex:是选择

第一个项的索引。

endIndex:选择

最后一个项的is和索引