如何执行以下Linq/Lambda代码?

Pur*_*ome 3 .net c# linq lambda

注意:pseduo代码和虚假思考的现场类/属性......以保护无辜者

我正在尝试检索Person实例,其中该人具有特定名称... IQueryable结果.

鉴于以下代码......

public class Person
{
    public ICollection<PersonDetails> PersonDetails { get; set; }
}

public class PersonDetails
{
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能找到一个Person名叫'Fred'的人?

我在尝试(失败了)......

public static IQueryable<Person> WithName(this IQueryable<Person> value, 
                                          string name)
{
    return value.Where(x => x.PersonDetails.Where(y => y.Name == name));
}
Run Code Online (Sandbox Code Playgroud)

..那不编译.

任何线索,偷看?

Mar*_*ers 12

尝试Any而不是第二个Where:

public static IQueryable<Person> WithName(this IQueryable<Person> value, 
                                          string name)
{
    return value.Where(x => x.PersonDetails.Any(y => y.Name == name));
}
Run Code Online (Sandbox Code Playgroud)