2011-11-16 59 views
3

说我有以下类型的对象的结构:(我不当然,这只是一个例子)LINQ - 中的任何使用属性从父对象()调用

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对象工作,我也没有办法引用父ManWife财产。

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

有没有一种方法可以构造这个谓词来获得我想要的逻辑?

回答

8

我想你想:

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

出于某种原因,我完全认为man变量会超出范围。我的脸上有鸡蛋。 – David

+0

我投了票关闭它。随意跟随。 – David

+1

@David为什么要关闭它?这是一个很好的问题,其他人可能会在稍后找到有用的。 – vcsjones

1

那么你有一个男人与一个妻子,所以你可以这样做:

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

提醒你,我强烈建议不要嫁给一个叫菲的女人;-)

+0

加一个笑话。 – David