Linq子集合标准,其中集合是双精度列表

时间:2012-02-17 11:30:58

标签: linq collections

如果我有几个这样的课程;

    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 个答案:

答案 0 :(得分:2)

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

委托的参数现在是双精度数,而不是具有Salary属性的Amount类型,因此您可以直接比较参数。

答案 1 :(得分:1)

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

试试这个。在第一种情况下,您的类型为Salary,并且您检查该类型的Amount字段。 在这种情况下,您需要检查double值,因此p&lt; 35000将正常运行。