【发布时间】:2014-09-15 21:37:47
【问题描述】:
这个标题是最糟糕的......
无论如何,我要做的是选择一个父对象,它包含 n 个子对象。我将传入子对象必须匹配的标准列表(1..n)。为简洁起见,这是我正在使用的类:
public class Parent {
public int Id { get; set; }
public List<Child> Children { get; set; }
}
public class Child {
public int Id { get; set; }
public int ParentId { get; set; }
public int SomeValue { get; set; }
}
我正在寻找的是包含与我传入的所有 SomeValues 匹配的孩子的父母列表
如果我有:
Parent 1
Child 1, SomeValue 10
Child 2, SomeValue 20
Child 3, SomeValue 40
Parent 2
Child 4, SomeValue 10
Child 5, SomeValue 20
Child 5, SomeValue 50
而myList是[10, 50],它只需要返回Parent 2。如果 myList 为 [10, 20] 则应返回父母双方。最后,如果 myList 是 [10, 20, 60],则不应返回任何内容。
我认为以下方法行不通,因为列表中未包含子项的值会将其从结果中删除(对吗?)
parents.where(p => p.children.all(c => myList.contains(c.SomeValue)));
并且 any 不起作用,因为只要它的一个孩子匹配,它就会返回任何东西。我需要确保父母有一个与 myList 中的每个项目匹配的孩子。我还考虑添加一个计数以确保匹配的项目至少与 myList.length 一样大,但这可能不起作用,因为 SomeValue 在子集合中不必是不同的(我想我可以运行一个孩子的 SomeValues 上的不同子选择?)
【问题讨论】:
-
+1 表示您对标题的评论(所以不会让我引用它,因为它检测到我的评论是负面或贬义的)