说我有以下类型的对象结构:(我当然不是,这只是一个例子)
public class Man
{
public Woman Wife { get; set; }
public List<Animal> Pets { get; set; }
}
public class Woman
{
public string Name { get; set; }
}
public class Animal
{
public string Name { get; set; }
}
我想写一个Linq谓词,它确定Man
是否拥有与他妻子同名的宠物。
我无法弄清楚如何执行此操作,因为当我写x.Pets.Any(...)
位时,我现在正在处理Pet
个对象,而我无法引用父{{1} }} Man
属性。
[编辑:上述说法不正确。这是一个错误的假设。]
有没有办法构造这个谓词来获得我想要的逻辑?
答案 0 :(得分:8)
我想你想要:
var query = men.Where(man => man.Pets.Any(pet => pet.Name == man.Wife.Name));
答案 1 :(得分:1)
嗯,你有一个男人和一个妻子,所以你可以这样做:
var hasPetNamedLikeWife = MyMan.Pets.Any(x => x.Name == MyMan.Wife.Name);
请注意,我强烈建议不要娶一个名为fido的女人; - )