【问题标题】:Linq sub collection criteria where collection is a list of doublesLinq 子集合标准,其中集合是双精度列表
【发布时间】:2012-02-17 11:30:58
【问题描述】:

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

    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)); 

我的比较对象是什么?

谢谢,

【问题讨论】:

    标签: linq collections


    【解决方案1】:
    var employees = employeeList.Where(o => o.PastSalaries.Any(p => p < 35000));
    

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

    【讨论】:

      【解决方案2】:
      var employees = employeeList.Where(o => o.PastSalaries.Any(p=>p < 35000)); 
      

      试试这个。在第一种情况下,您的类型是 Salary 并且您检查该类型的 Amount 字段。 在这种情况下,您要检查 double 值,因此 p35000 将正常工作。

      【讨论】:

        猜你喜欢
        • 2021-03-14
        • 1970-01-01
        • 2017-01-28
        • 2019-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多