У меня есть коллекция объектов А. У каждого A есть поле, которое соотносится с объектом B - из которого у меня есть другая коллекция. Другими словами, каждый B связан с подмножеством набора As (но только концептуально, а не в коде). Это поле, связывающее А с В, может меняться в течение срока службы системы. Существуют системные требования, препятствующие изменению этой структуры.
Если мне нужно многократно выполнять операции над множеством A каждого B, было бы лучше повторно использовать метод Where () для коллекции A или создать другую коллекцию, которой владеет B, и класс, управляющий добавлением и удалением соответствующих предметов.
Дайте мне посмотреть, смогу ли я записать это в коде:
class A {
public B owner;
...
}
class B {
...
}
class FrequentlyCalledAction {
public DoYourThing(B current) {
List<A> relevantItems = listOfAllAItems.Where(x => x.owner == current).ToList()
foreach (A item in relevantItems) {
...
}
}
}
Vs:
class A {
public B owner;
...
}
class B {
public List<A> itsItems;
}
class FrequentlyCalledAction {
public void DoYourThing(B current) {
foreach (A item in current.itsItems) {
...
}
}
}
class AManager {
public void moveItem(A item, B from, B to) {
from.itsItems.remove(item);
to.itsItems.add(item);
}
}