lambda表达式中的深层LINQ查询
我希望使用LINQ查询获得电话号码==“666666”的员工 这些是类定义:lambda表达式中的深层LINQ查询,linq,lambda,Linq,Lambda,我希望使用LINQ查询获得电话号码==“666666”的员工 这些是类定义: public class Employees { public List<Phones> Phones{get;set} } public class Phones { public string Id{get;set;} public string Number{get;set;} } var employees= data.GetEmployees()
public class Employees
{
public List<Phones> Phones{get;set}
}
public class Phones
{
public string Id{get;set;}
public string Number{get;set;}
}
var employees= data.GetEmployees()
.Where(e=> e.Phones ???i need to navigate a level below phones ???)
.Select(e => new Employee()
{
Id=e.Id,
Name=e.Name
});
我的问题是我不知道如何在这个LINQ表达式中更深入,因为在
e=>e..
中,我可以作为IEnumerable
访问Phone
,但我想导航到Phone
的属性。传递到where方法的参数只是一个函数,它为每个给定元素、所有方法(包括LINQ方法)返回true或false(根据访问ref/out参数等)仍然可以在其中调用:
var employees= data.GetEmployees()
.Where(e => e.Phones.Any(p => p.Number == "666666"))
.Select(e => new Employee()
{
Id=e.Id,
Name=e.Name
});
最简单的方法是使用嵌套的LINQ查询。在这种情况下,您应该查看
Any
方法
var employees= data
.GetEmployees()
.Where(e => e.Phones.Any(p => p.Number == "666666"))
.Select(e => new Employee() {
Id = e.Id,
Name = e.Name
});
你是在说魔鬼吗?;)谢谢。10分钟后的最佳答案:-)
var employees= data.GetEmployees()
.Where(e=> e.Phones.Contains(x=>x.Number == "666666"))
.Select(e => new Employee()
{
Id=e.Id,
Name=e.Name
});