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

时间:2017-01-20 17:40:57

标签: entity-framework linq

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

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; }    
}

我想得到一个名单上所有有孩子的父母名单不是“戴夫”

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

如果父母二有两个叫Sam和Dave的孩子,我不想要他们

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

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

如果Parent 5有一个名叫Dave的孩子,我不想要他们

1 个答案:

答案 0 :(得分:5)

  

我想得到一个名单上所有有孩子的父母名单不是“戴夫”

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

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

  

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

在LINQ中翻译为:

var query = db.Parent.Where(p => !p.Children.Any(c => c.Name == "Dave"));