Проблема в том, что я хочу выбрать лучи, совпадающие друг с другом одним щелчком мыши. У меня есть код, который проверяет, подключены ли они. Найдите код ниже
public bool ElementsConnect(Element firstelement, Element secondelement)
{
ElementGeometry geo= new ElementGeometry();
bool istrue ;
List<XYZ> firstendpoints = GetEndPoints(firstelement);
List<XYZ> secondendpoints = GetEndPoints(secondelement);
return istrue = firstendpoints.Any(firspoint => secondendpoints.Any
(secondpoint => secondpoint.X == firspoint.X && secondpoint.Y==firspoint.Y
&& secondpoint.Z==firspoint.Z));
}
Теперь мне нужен второй метод для рекурсивного цикла по списку, чтобы найти другие, которые присоединены, пока их не будет. Вот и не могу найти решение. Помощь будет принята с благодарностью. Позвольте мне добавить, что этот код никогда не выходит из цикла.
public List<Element> GetConnectedBeams(Element element, List<Element> elements)
{
List<Element> beams = new List<Element>();
for(int i=0; i < elements.Count(); i++)
{
if(ElementsConnect( element,elements[i]))
beams.Add(elements[i]);
}
List<Element> eles = null;
foreach (var beam in beams)
{
Element ele= elements.Find(x=> beams.Contains(x));
eles = elements.Where(x=> x!= ele).ToList();
beams= GetConnectedBeams(beam,eles) ;
}
return beams;
}