Как хранить несколько List<T> и передавать

289
02 августа 2017, 18:33

Есть список листов, которые планирую заполнять из БД. Как их можно сохранить в 1 список?

Хотел сделать List< List< T >>, но нельзя - разные структуры.

Хотелось бы получить что-то наподобие:

List[0]< List<systeam>-200строк List<etlcontrolload>-50строк List<sem>-10строк >
List[1]< List<systeam>-220строк List<etlcontrolload>-55строк List<sem>-15строк >
List<systeam> SysteamList = new List<systeam>();
List<etlcontrolload> EtlcontrolloadList = new List<etlcontrolload>();
List<sem> SemList = new List<sem>();
List<ddmpkgstate> DdmpkgstateList = new List<ddmpkgstate>();
List<etlcontroltable> EtlcontroltableList = new List<etlcontroltable>();
List<dqlog> DqlogList = new List<dqlog>();
List<etlcontrolloadarch> EtlcontrolloadarchList = new List<etlcontrolloadarch>();
Answer 1

Если ты разрабатываешь независимый проект без тонны исторического кода, рекомендую сразу взять на вооружение тонкий фреймворк для работы с базой, а не изобретать собственный велосипед. Например, linq2db.

Поддерживает большинство популярных баз данных, есть примеры на все случаи жизни. Минимальный оверхед на выполнение запросов.

И, естественно, никаких List<List<List>> в продукте быть не должно. Но если очень хочется, тебе ничто не мешает написать обёртку над списком и спрятать под общий интерфейс или просто хранить их в списке List<object>. Но это очень хреновое решение.

Answer 2

В идеале, каждая сущность должна иметь свой собственный класс с полями. В свою очередь должна быть еще сущность(Например, DataBase), которая агрегирует в себе эти сущности и хранит соединение.

Примерно, по такому принципу работают современные ORM. Если вам нужно выполнять сложные запросы, а не просто получать данные, то я бы на вашем месте взял бы какую-нибудь ORM и не изобретал велосипед.

По идее, если вы сделаете List<Object>, то сможете все что угодно хранить там, но вы потеряете безопасность типов...

Поэтому, лучше сделать, как я написал в начале. И безопасность типов будет на месте, и код будет более читаем.

READ ALSO
C#. WinForms DataGridView. Заполнить колонку типа DataGridViewComboBoxColumn

C#. WinForms DataGridView. Заполнить колонку типа DataGridViewComboBoxColumn

Добрый день, есть список типов List Users;

511
Как установить Microsoft.ACE.OLEDB.12.0?

Как установить Microsoft.ACE.OLEDB.12.0?

На ПК стоит 2013 Office x32 и почему-то не могу использовать драйвер MicrosoftACE

389
c# сравнение изображений

c# сравнение изображений

Как можно сравнить картинки, если они имеют разные разрешения, но рисунок один и тот же?

450
Визуализация данных из БД c#

Визуализация данных из БД c#

Добрый день! У меня имеется БД, в которой храится информация о связях объектовВсе объекты имеют один тип, и каждый объект связан с другими...

289