linq - использовать свойство из родительского объекта в вызове Any () - PullRequest
3 голосов
/ 16 ноября 2011

Скажем, у меня есть следующий вид структуры объекта: (Конечно, нет, это просто пример)

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 объектами, и у меня нет возможности ссылаться на родительские Man Wife собственность.

[Редактировать: приведенное выше утверждение неверно. Это было ложное предположение.]

Есть ли способ структурировать этот предикат, чтобы получить нужную логику?

Ответы [ 2 ]

8 голосов
/ 16 ноября 2011

Я думаю, что вы хотите:

var query = men.Where(man => man.Pets.Any(pet => pet.Name == man.Wife.Name));
1 голос
/ 16 ноября 2011

Ну, у вас есть один мужчина с одной женой, так что вы можете сделать:

var hasPetNamedLikeWife = MyMan.Pets.Any(x => x.Name == MyMan.Wife.Name);

Имейте в виду, я настоятельно рекомендую не жениться на женщине по имени Фидо; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...