Ich habe eine Liste der Mitarbeiter Objekte. Ich muss nur zwei Mitarbeiterobjekte zwischen zwei Indizes auswählen (basierend auf Start- und Endvariablen). Der folgende Code funktioniert einwandfrei, aber nicht in LINQ. Was ist der beste LINQ
Code für diesen Zweck?LINQ Weg, um Elemente zwischen zwei Indizes in einer Liste
Hinweis: Ich suche Method Chain
Ansatz
CODE
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;
}
}
Kunde
List<Employee> searchResult = DatabaseSimulator.GetData("Divisible by 2", 2, 2);
Hinweis auszuwählen, die Sie nicht immer wieder neu erstellen sollten Listen mit 'ToList' (zB in' SearchEmployees'), wenn Sie diese Methoden verketten. Das ist sehr ineffizient. Liefern Sie einfach die Abfrage zurück und rufen Sie 'ToList' am Ende auf. –
@TimSchmelter Meinst du ich muss "IEnumerable" anstatt "List" zurückgeben? – Lijo
Ja. In diesem Fall wäre es besser, Überladungen von 'SearchEmployees' mit/ohne Start- und End-Index bereitzustellen. –