簡體   English   中英

僅使用Entity Framework LINQ優化查找最小值/最大值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM