LINQ包含使用投影

本文关键字:投影 包含使 LINQ | 更新日期: 2023-09-27 18:10:48

List<Employee> listEmployees = new List<Employee>{
    new Employee {ID = 101, FirstName = "Mark", AnnualSalary = 60000},
    new Employee {ID = 102, FirstName = "Mary", AnnualSalary = 35000},
    new Employee {ID = 103, FirstName = "John", AnnualSalary = 30000}
};
var result5 = listEmployees.Select(x => new {x.ID, x.FirstName})
    .Contains(new Employee {ID = 101, FirstName "Mark"});
Response.Write(result5 + "<br/>");

如何比较员工ID 101和FirstName"Mark"是否存在?

LINQ包含使用投影

listEmployees.Any(employee => employee.FirstName.Equals("Mark") && employee.ID == 101)

如果列表中任何对象的FirstName为"Mark"且ID为101,则返回true。如果您需要在方法中使用它,则可以将其一般化。

如果您想知道列表中是否包含符合您的条件的项目:

Employee employee = listEmployees.FirstOrDefault(e => e.ID == 101 && e.FirstName.Equals("Mark"));
if(employee != null) //exists
{
    //can take action on employee
}

或者,如果你想要一个布尔响应(如Contains):

boolean exists = listEmployees.Any(e => e.ID == 101 && e.FirstName == "Mark");

传递给Contains的项需要匹配序列中项的类型,在本例中是特定的匿名类型,而不是其他类型。如果您提供一个匿名类型的对象(使用相同类型和名称的相同字段),而不是一个Employee,它将编译和运行得很好。

使用以下代码检查具有特定条件的项是否在列表中

bool exists = listEmployees.Exists(x=> x.ID == 101 && x.FirstName=="Mark");