Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебрать данные из результатов запросов по классам / 8 сообщений из 8, страница 1 из 1
15.12.2017, 14:31
    #39570343
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
Здравствуйте!

Пусть приложение отправляет несколько SQL-запросов. И один из запросов возвращает такой результат как исходные данные:

ТТSKUДата Мера1Мера2ТТ1SKU101.10.201752ТТ1SKU102.10.20171ТТ1SKU103.10.20171ТТ1SKU104.10.20174ТТ1SKU105.10.20172ТТ1SKU106.10.20171ТТ1SKU107.10.20171ТТ1SKU108.10.201711...............ТТ1SKU201.10.201741ТТ1SKU202.10.20171...............ТТ2SKU101.10.201731ТТ2SKU102.10.20172...............

Будет два класса.

Первый класс это Сценарий. Имеет такие свойства как ТТ , SKU , Дата поставки , и еще свойство Данные как массив Второго класса.
ЭкземплярСценарий(1)Сценарий(2)Сценарий(3)Сценарий(4)...Сценарий(5)Сценарий(6)Сценарий(7)Сценарий(8)...TTТТ1ТТ1ТТ1ТТ1...ТТ2ТТ2ТТ2ТТ2...SKUSKU1SKU1SKU2SKU2...SKU1SKU1SKU2SKU2...Дата поставки22.10.201727.10.201722.10.201727.10.2017...22.10.201727.10.201722.10.201727.10.2017...Данные()Данные()Данные()Данные()Данные()...Данные()Данные()Данные()Данные()...
Второй класс имеет такие свойства как Дата , Мера1 , Мера2 . В общем если разложить этот массив Данные , то выглядит следующим образом:

Для экземпляра класса Сценарий(1)
ЭкземплярДанные(1)Данные(2)Данные(3)Данные(4)Данные(5)Данные(6)Данные(7)Данные(8)Дата01.10.201702.10.201703.10.201704.10.201705.10.201706.10.201707.10.201708.10.2017...Мера1541...Мера22112111...
Для других экземпляров класса Сценарии() другие данные.

Будет создаваться список ТТ+SKU+Дата поставки. Потом для каждого элемента списка создается класс и толкаются туда соответствующие данные из результатов запросов.

Если я правильно понимаю, то сначала надо выгружать данные через объект SqlCommand и SqlReader, а потом затолкать в объект типа виртуальная таблица. И там перебором по классам раскидывать данные.

Скажите как на C# правильно считывать данные с результатов запросов, чтобы потом быстро раскидывать данные по классам?
...
Рейтинг: 0 / 0
15.12.2017, 14:50
    #39570363
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
не особо понял, что такое раскидывать по классам.
Можно для класса сущности, сделать метод типа TryParse(IDataRecord) который будет считывать из записи IDataReader'а все нужные поля и загружать себя сам.
Для простоты есть такие классы как DataSet'ы, там можно определить зависимости, можно сперва загрузить в DataSet'ы, а потом создавать объекты нужного класса из них.
Есть способ еще проще, но медленнее, выгружаете данные в виде 1 XML файла, и залпом десериализуете и получаете сразу готовую модель данных

Смахивает это всё с виду на базу временных рядов или что это такое?
...
Рейтинг: 0 / 0
15.12.2017, 16:25
    #39570428
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
Roman Mejtesне особо понял, что такое раскидывать по классам.Если говорить проще, то предположим у нас есть первый экземпляр класса, где свойство ТТ имеет значение "ТТ1" и SKU имеет значение "SKU1". Нужно заполнить свойство-массив Данные() , а именно Мера1 и Мера2 по дням. Значит пробегаемся по строкам результата, и ищем строки с "ТТ1+SKU1+ 01 .10.2017", "ТТ1+SKU1+ 02 .10.2017", "ТТ1+SKU1+ 03 .10.2017" и т. д. и по дням в экземпляре заполняем соответствующие значения Мера1 и Мера2 .

Можно для класса сущности, сделать метод типа TryParse(IDataRecord) который будет считывать из записи IDataReader'а все нужные поля и загружать себя сам.Как это загружать сам себя?
Для простоты есть такие классы как DataSet'ы, там можно определить зависимости, можно сперва загрузить в DataSet'ы, а потом создавать объекты нужного класса из них. Можно ссылку, пример
Есть способ еще проще, но медленнее, выгружаете данные в виде 1 XML файла, и залпом десериализуете и получаете сразу готовую модель данныхМожно ссылку, пример

Смахивает это всё с виду на базу временных рядов или что это такое?В исходнике данные по дням. И в итоге нужно построить отдельные таблицы, диаграммы, статистику по каждому экземпляру.
...
Рейтинг: 0 / 0
15.12.2017, 17:37
    #39570482
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
в гугле забаннили?
DataSet: https://msdn.microsoft.com/ru-ru/library/system.data.dataset(v=vs.110).aspx

Сериализация:
https://msdn.microsoft.com/ru-ru/library/system.xml.serialization.xmlserializer(v=vs.110).aspx
https://msdn.microsoft.com/ru-ru/library/tz8csy73(v=vs.110).aspx
по поводу генерации XML, зависит от того, какую СУБД вы используйте, если честно, я не в 1 не умею этого делать, потому как для этого у нас есть базисты, но думаю там всё довольно просто, погуглите
...
Рейтинг: 0 / 0
15.12.2017, 17:40
    #39570486
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
авторКак это загружать сам себя?
в качестве параметров в конструторе типа или в методе фабрике должен быть аргумент типа IDataReader\IDataRecord, в этом методе\конструторе вы прочитаете поля и заполните свойства класса
...
Рейтинг: 0 / 0
18.12.2017, 11:32
    #39571273
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
ferzmikk,

У вас каша в голове, вы уйдите от данных и перейдите к сущностям
Что такое сценарий? что такое данные сценария?

по поводу чтения данных есть куча ORM,
но если ваш проект небольшой, то может быть уместно использовать типизированный DataSet
...
Рейтинг: 0 / 0
18.12.2017, 11:59
    #39571286
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
pationferzmikk,уйдите от данных и перейдите к сущностям
Что такое сценарий? что такое данные сценария?Сценарий это класс, который обозначает, скажем так, Идентификацию TT+SKU. Данные сценария - это скажем так, для ТТ+SKU данные по отгрузкам и продажам по дням за определенный период. Это нужно для того, чтобы потом строить таблицу для каждого ТТ+SKU, диаграмму, смотреть статистику.
...
Рейтинг: 0 / 0
18.12.2017, 12:07
    #39571295
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перебрать данные из результатов запросов по классам
ferzmikk,
Зачем именно классы и ООП? На sql не хотите?
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Перебрать данные из результатов запросов по классам / 8 сообщений из 8, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]