[英]Optimize finding Min/Max value using Entity Framework LINQ only
我通常在數據庫中找到最小/最大的方式是使用
var employeeWithMinSalary = employees.OrderBy(x=>x.Salary).First()
var employeeWithMaxSalary = employees.OrderByDescending(x=>x.Salary).First()
但是,性能為O(n * Log(n))。
是否有其他方法可以僅使用Linq優化O(n)的性能? (沒有其他庫)
不必對列表進行排序即可從列表中查找“最小值/最大值”。 最佳排序算法的平均復雜度為O(N * logN)。 即使列表未排序,“最大”和“最小”操作的取值也不應超過O(N)。
您可以實施此處發布的解決方案或實施以下代碼:
private static Employee MaxBySalary(List<Employee> employees)
{
Employee employee = null;
employees.ForEach(x => employee = ( employee != null && employee.Salary > x.Salary) ? employee : x );
return employee;
}
private static Employee MinBySalary(List<Employee> employees)
{
Employee employee = null;
employees.ForEach(x => employee = (employee != null && employee.Salary < x.Salary) ? employee : x);
return employee;
}
兩種方法都具有O(N)復雜度
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.