Предположим, у нас есть список контейнеров, каждый из которых является объектом. В каждом контейнере есть несколько объектов.Как найти пересечение между коллекциями
Как найти все дублированные объекты, которые совместно используются в двух или более контейнерах?
Каждый контейнер имеет идентификатор, имя, список объектов как свойство. Каждый объект имеет идентификатор и имя.
Пожалуйста, смотрите изображение:
Результат должен быть, как:
-------------
Object1.Name
Object2.Name
Object3.Name
-------------
Я использовал неверный код
public class Container
{
public string ID;
public string Name;
public string Top, Left, Right, Bottom;
public List<ObjectX> Objects = new List<ObjectX>();
}
public class ObjectX
{
public string ID;
public string Name;
public string Top, Left, Right, Bottom;
}
List<Container> AllBoundaries = new List<Container>();
List<ObjectX> all_components = new List<ObjectX>();
Container b1 = new Container();
b1.Name = "Boundary1";
b1.ID = "1";
AllBoundaries.Add(b1);
Container b2 = new Container();
b2.Name = "Boundary2";
b2.ID = "2";
AllBoundaries.Add(b2);
Container b3 = new Container();
b3.Name = "Boundary3";
b3.ID = "3";
AllBoundaries.Add(b3);
//----------------------------------------------------------------------------------------
ObjectX c1 = new ObjectX();
c1.ID = "1";
c1.Name = "c1";
b1.Objects.Add(c1);
ObjectX c2 = new ObjectX();
c2.ID = "2";
c2.Name = "c2";
b1.Objects.Add(c2);
ObjectX c3 = new ObjectX();
c3.ID = "3";
c3.Name = "c3";
b1.Objects.Add(c3);
ObjectX c22 = new ObjectX();
c22.ID = "2";
c2.Name = "c2";
b2.Objects.Add(c2);
foreach (Container bx1 in AllBoundaries)
{
foreach (Container bx2 in AllBoundaries)
{
for (int i = 1; i < bx2.Objects.Count; i++)
if (bx1.ID != bx2.ID)
{
List<ObjectX> query = bx1.Objects.FindAll(bx => bx.Name == bx2.Objects[i].Name);
Console.WriteLine(bx2.Objects[i].Name + " Distributed");
bx2.Objects.Remove(bx2.Objects[i]);
}
}
}
Но это дает мне все объекты от 1 до 9, что неверно.
Я думаю, что вопрос просто создать [SSCCE] (http://sscce.org/). Как насчет создания полностью содержащегося примера (также показывающего ожидаемый результат), чтобы мы могли копировать/вставлять и тестировать его. – EZI
Что случилось? –
Я не хочу создавать тестовый пример, который может и не быть тем, что вы ожидаете. – EZI