Linq查询以获取子列表中的共享项

Ign*_*cia 7 .net c# linq linq-to-objects

我有一个具有List属性的类,我将这个类命名为A.然后我有一个List<A>.

我需要为对象,以让所有的图标B是存在上的所有项目一个LINQ List<A>.

示例澄清:

var list = new List<A>
           {
             new A { B = new List<B> { B1, B2, B3, B4 } }
             new A { B = new List<B> { B3, B4, B5, B6 } }
             new A { B = new List<B> { B2, B3, B4, B5, B6 } }
           };
Run Code Online (Sandbox Code Playgroud)

查询必须返回对象B3和B4,因为它们是包含在所有List<A>对象上的唯一对象.

Mat*_*dge 10

如果你有一个列表的列表,你想那是所有的内列出的元素,你可以使用的组合AggregateIntersect,就像这样:

IEnumerable<IEnumerable<string>> listOfLists = new string[][] {
    new string[] { "B1", "B2", "B3", "B4" },
    new string[] { "B3", "B4", "B5", "B6" },
    new string[] { "B2", "B3", "B4", "B5", "B6" }
};

IEnumerable<string> commonElements = listOfLists.Aggregate(Enumerable.Intersect);
Run Code Online (Sandbox Code Playgroud)