2012-02-17 136 views
2

如果我有幾個這樣的類;Linq子集合標準,其中集合是雙打列表

public class Employee 
    { 
     public string Name { get; set; } 
     public string Address { get; set; } 
     public double Salary { get; set; } 
     public List<Salary> PastSalaries { get; set; } 
    } 

    public class Salary 
    { 
     public double Amount { get; set; } 
    } 

我可以得到過去的工資低於一定數額的員工名單;例如

var employees = employeeList.Where(o => o.PastSalaries.Any(p => p.Amount < 35000)); 

這工作正常,但如果我的過去收集的工資是不是薪水類的集合,而是雙打的集合。例如

public class Employee 
{ 
    public string Name { get; set; } 
    public string Address { get; set; } 
    public double Salary { get; set; } 
    **public List<double> PastSalaries { get; set; }** 
} 

那麼我該如何做同樣的查詢?

var employees = employeeList.Where(o => o.PastSalaries.Any(???? < 35000)); 

我對比的對象是什麼?

感謝,

回答

2
var employees = employeeList.Where(o => o.PastSalaries.Any(p => p < 35000)); 

參數的委託,現在是雙,而不是一個Salary型與Amount屬性,這樣你就可以在參數直接比較。

1
var employees = employeeList.Where(o => o.PastSalaries.Any(p=>p < 35000)); 

試試這個。在第一種情況下,您的類型是Salary,並且您檢查Amount該類型的字段。 在這種情況下,您要檢查double值,所以p < 35000將正常工作。

+0

Headslap !,謝謝你,我以爲我曾嘗試過。 – 2012-02-17 11:48:58