LINQ包含使用投影

时间:2015-09-01 18:17:30

标签: c# linq

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&#34; Mark&#34;存在?

4 个答案:

答案 0 :(得分:3)

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

如果列表中的任何对象具有FirstName“Mark”和ID 101,则返回true。如果需要在方法中使用它,则可以推广。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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