|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
Здравствуйте! Пусть приложение отправляет несколько 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# правильно считывать данные с результатов запросов, чтобы потом быстро раскидывать данные по классам? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 14:31 |
|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
не особо понял, что такое раскидывать по классам. Можно для класса сущности, сделать метод типа TryParse(IDataRecord) который будет считывать из записи IDataReader'а все нужные поля и загружать себя сам. Для простоты есть такие классы как DataSet'ы, там можно определить зависимости, можно сперва загрузить в DataSet'ы, а потом создавать объекты нужного класса из них. Есть способ еще проще, но медленнее, выгружаете данные в виде 1 XML файла, и залпом десериализуете и получаете сразу готовую модель данных Смахивает это всё с виду на базу временных рядов или что это такое? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 14:50 |
|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
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 файла, и залпом десериализуете и получаете сразу готовую модель данныхМожно ссылку, пример Смахивает это всё с виду на базу временных рядов или что это такое?В исходнике данные по дням. И в итоге нужно построить отдельные таблицы, диаграммы, статистику по каждому экземпляру. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 16:25 |
|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
в гугле забаннили? 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 не умею этого делать, потому как для этого у нас есть базисты, но думаю там всё довольно просто, погуглите ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 17:37 |
|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
авторКак это загружать сам себя? в качестве параметров в конструторе типа или в методе фабрике должен быть аргумент типа IDataReader\IDataRecord, в этом методе\конструторе вы прочитаете поля и заполните свойства класса ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 17:40 |
|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
ferzmikk, У вас каша в голове, вы уйдите от данных и перейдите к сущностям Что такое сценарий? что такое данные сценария? по поводу чтения данных есть куча ORM, но если ваш проект небольшой, то может быть уместно использовать типизированный DataSet ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 11:32 |
|
Перебрать данные из результатов запросов по классам
|
|||
---|---|---|---|
#18+
pationferzmikk,уйдите от данных и перейдите к сущностям Что такое сценарий? что такое данные сценария?Сценарий это класс, который обозначает, скажем так, Идентификацию TT+SKU. Данные сценария - это скажем так, для ТТ+SKU данные по отгрузкам и продажам по дням за определенный период. Это нужно для того, чтобы потом строить таблицу для каждого ТТ+SKU, диаграмму, смотреть статистику. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 11:59 |
|
|
start [/forum/topic.php?fid=20&msg=39571286&tid=1399563]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
102ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 198ms |
0 / 0 |