Linq选择父对象,其中子对象不包含值

Ash*_*our 1 linq entity-framework

如果我有这样的数据库结构

class Parent {
int ID { get; set; }
string Name { get; set; }
List<Child> Children { get; set; }
}

class Child {
int ID { get; set; }
string Name { get; set; }
List<Parent> Parents { get; set; }    
}
Run Code Online (Sandbox Code Playgroud)

我想得到所有有孩子的父母的名单,名字不是"Dave"

因此,如果父母一个有两个孩子叫Jack和Jill,我想要他们

如果父母二有两个孩子叫萨姆和戴夫我不想要他们

如果父母三没有孩子我想要他们

如果父母四有一个名叫史蒂夫的孩子我想要他们

如果父母五有一个孩子叫戴夫,我不想要他们

Iva*_*oev 5

我想得到所有有孩子的父母的名单,名字不是"Dave"

与规则#3冲突:如果父3没有孩子,我想要他们.

符合所有规则的要求可描述为:

获取所有没有孩子姓名"Dave"的父母的名单

在LINQ中翻译为:

var query = db.Parent.Where(p => !p.Children.Any(c => c.Name == "Dave"));
Run Code Online (Sandbox Code Playgroud)