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

Dav*_*vid 3 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; }
}
Run Code Online (Sandbox Code Playgroud)

我想写一个Linq谓词,它确定Man一个宠物是否拥有与他妻子同名的宠物.

我无法弄清楚如何做到这一点,因为当我写这个x.Pets.Any(...)位时,我现在正在使用Pet对象,我无法引用父级ManWife属性.

[编辑:以上陈述不正确.这是一个错误的假设.]

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

Jon*_*eet 8

我想你想要:

var query = men.Where(man => man.Pets.Any(pet => pet.Name == man.Wife.Name));
Run Code Online (Sandbox Code Playgroud)