2012-02-17 130 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