Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# linq-在任何()调用中使用父对象的属性_C#_Linq_Lambda - Fatal编程技术网

C# linq-在任何()调用中使用父对象的属性

C# linq-在任何()调用中使用父对象的属性,c#,linq,lambda,C#,Linq,Lambda,假设我有以下类型的对象结构:(我当然没有,这只是一个示例) public-class-Man { 公共女性妻子{get;set;} 公共列表宠物{get;set;} } 公共阶级妇女 { 公共字符串名称{get;set;} } 公营动物 { 公共字符串名称{get;set;} } 我想写一个Linq谓词,它决定一个男人是否拥有一个和他妻子同名的宠物 我不知道该怎么做,因为当我编写x.Pets.Any(…)位时,我现在正在处理Pet对象,我无法引用父男人的妻子的属性 [编辑:上述陈述不正确。这是

假设我有以下类型的对象结构:(我当然没有,这只是一个示例)

public-class-Man
{
公共女性妻子{get;set;}
公共列表宠物{get;set;}
}
公共阶级妇女
{
公共字符串名称{get;set;}
}
公营动物
{
公共字符串名称{get;set;}
}
我想写一个Linq谓词,它决定一个男人是否拥有一个和他妻子同名的宠物

我不知道该怎么做,因为当我编写
x.Pets.Any(…)
位时,我现在正在处理
Pet
对象,我无法引用父
男人的
妻子的
属性

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

是否有一种方法可以构造此谓词以获得所需的逻辑?

我想您需要:

var query = men.Where(man => man.Pets.Any(pet => pet.Name == man.Wife.Name));

你有一个男人和一个妻子,所以你可以:

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

请注意,我强烈建议不要嫁给一个叫菲多的女人;-)

出于某种原因,我完全认为man变量超出了范围。我脸上有鸡蛋。@David为什么要关上它?这是一个很好的问题,别人以后可能会发现这个问题很有用,因为它是基于一个错误的假设。但如果有用的话,嘿,留着吧。
var hasPetNamedLikeWife = MyMan.Pets.Any(x => x.Name == MyMan.Wife.Name);