linq - 在Any()调用中使用父对象的属性

时间:2011-11-16 15:59:57

标签: c# linq lambda

说我有以下类型的对象结构:(我当然不是,这只是一个例子)

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属性。

[编辑:上述说法不正确。这是一个错误的假设。]

有没有办法构造这个谓词来获得我想要的逻辑?

2 个答案:

答案 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的女人; - )