Поскольку вы говорите о вкладках, мне кажется, что вы хотите что-то ближе к словарю, указанному в имени вкладки, с набором элементов для каждой вкладки. В .NET 3.5 добавлен интерфейс ILookup<,>
:
ILookup<string, Foo> items = null; //TODO
foreach (Foo foo in items["SomeTab"])
{
Console.WriteLine(foo.Bar);
}
Обратите внимание, что реализация MS неизменна - вы не можете редактировать ее после создания; Тем не менее, я написал EditableLookup<,>
в MiscUtil , который позволяет вам работать более эффективно (как в обычной коллекции .NET):
var items = new EditableLookup<string, Foo>();
items.Add("SomeTab", new Foo { Bar = "abc" });
items.Add("AnotherTab", new Foo { Bar = "def" });
items.Add("SomeTab", new Foo { Bar = "ghi" });
foreach (Foo foo in items["SomeTab"])
{ // prints "abc" and "ghi"
Console.WriteLine(foo.Bar);
}
Без EditableLookup<,>
вам нужно построить поиск с помощью метода расширения Enumerable.ToLookup
.
Если какая-то часть этого звучит как опция, я могу добавить больше деталей ...