powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Из DataTable в двумерный массив
17 сообщений из 17, страница 1 из 1
Из DataTable в двумерный массив
    #38457389
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья!

Помогите решить следующую проблему:
Мне необходимо передать данные из объекта DataTable
Код: vbnet
1.
Dim dt As DataTable = ds.Tables.Item("ProductionReportData")


в двумерный массив data_
Код: vbnet
1.
Dim data_ As Object(,) = New Object(dt.Columns.Count - 1, dt.Rows.Count - 1) {}


Как это сделать? (не прибегая к циклам переводящим в массив по одному значению за раз)
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38457715
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74,

.. вообще-то, гугль пишет, что построчный цикл For Each работает быстрее, нежели, например, LINQ .ToList() ....

... например
http://codereview.stackexchange.com/questions/30714/faster-way-to-convert-datatable-to-list-of-class
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38458268
Sergey S
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dt.Rows.CopyTo(....
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38465237
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно, даже если копировать каждое значение в массив получается достаточно быстро.
Может кому пригодиЦЦа, получилось вот так:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 For iRow = 0 To dt.Rows.Count - 1

            For iCol = 0 To dt.Columns.Count - 1

                data_.SetValue(dt.Rows(iRow).Item(iCol).ToString, {iRow, iCol})

            Next iCol

 Next iRow
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38465247
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74,

пипец, зачем ты спрашивал про "без циклов"?
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38465893
Gagarin_74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

Ну так это...

Я думал цыклами это долго будет. А оказалось что дольше из сети запрос выкачивать чем массив цыклом заполнять.
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38465897
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gagarin_74Я думал цыклами это долго будет.
А без циклов - это подразумевался linq? А в linq, надо думать, эти преобразования святым духом делаются? Открою страшную тайну: унутре ентой линкью всё те же циклы. И, бывает, (см. выше) менее оптимальные, чем написанные руками.
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467473
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны...Открою страшную тайну: унутре ентой линкью всё те же циклы. И, бывает, (см. выше) менее оптимальные, чем написанные руками.+100500...

Вот потому я эту ленивую кю и не применяю.
Циклами оно как-то сподручнее, ди и контроля больше, ежели и нарвешься на баг, так на свой, а не на баг того индуса, что цикл в ленивом кю нарисовал ...
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467477
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, просто не умеешь это готовить, особенно сложные конструкции LINQ :)
Читаемость и красота кода чаще выше, чем экономия пары процессорных тиков по сравнению с говнокодом из сотни строк кода.
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467607
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЧитаемость и красота кода чаще выше, чем экономия пары процессорных тиков по сравнению с говнокодом из сотни строк кода.
Согласен, поэтому сам я linq использую часто и с удовольствием. Но тут вот автор как раз пожелал мегаоптимизации.
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467662
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНо тут вот автор как раз пожелал мегаоптимизации
двумерный нетипизированный массив слабо вяжется с мегаоптимизацией
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467674
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропил,
да ничего там страшного нет, массив - цепочка указателей в памяти - выстроенная в ряд где первый указатель является указателем на сам массив ( утрировано),а сами объекты могут быть разбросаны по всей куче, весь продукт программирования держится на циклах автору конечно это не ведомо, по этому работа с массивами быстра и оптимальна - смещение на размер указателя и получаем следующий, да и у самой идеи говнопреобразования ноги растут от использования DT, кто по продвинутей уж давно забыли что это..
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467678
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры ПавловныНо тут вот автор как раз пожелал мегаоптимизации.
Использование исходного DataTable уже как-то не вяжется с оптимизацией :)
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467830
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Знаешь, я этого "LINQ" наелся в ABAP так что мама не горюй, там ентого ленивого кю - ну просто завались.
Пишешь в ABAP SELECT, а препроцессор перелопачивает его в обыкновенный SELECT к базе, а потом в зависимости от того что и как ты нарисовал либо тебе типизированный массив соорудит, либо курсор замутит и по одной записи будет вываливать.
Работаешь с внутренней таблицей с помощью LOOP ... WHERE... и вот тебе опять аля ленивый кю.
Только вот всё это хозяйство было придумано задолго до .NET.
А взять тот-же Clipper, FoxPro и т.д. Эххх, какие времена были-то а???
Головой надо было много работать...

А нынче что? Надо тебе по условию из массива объектов выборку -да пожалуйста вот тебе и LINQ в подмогу, нарисовал select и всех делов, а что там и как, да нахрена молодёжи знать-то... А потом голову ломают при чуть более сложной выборке и требованиям по скорости...

В общем, я то не против LINQ как такового, просто нужно понимать что это и для чего, а сам понимаешь, и думаю согласишься, что без знания основ и их глубокого понимания далеко не уедешь...
Да и к тому-же для простого перегона из DataTable в object[x,y] достаточно простого цикла...
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467894
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovЗнаешь, я этого "LINQ" наелся в ABAP так что мама не горюй, там ентого ленивого кю - ну просто завались
Не первый раз замечаю, что ты ставишь акцент на ленивость. Причем тут LINQ и Lazy?

Alex KuznetsovТолько вот всё это хозяйство было придумано задолго до .NET.
Лично мне LINQ очень сильно облегчает жизнь, это очень сильная технология, без которой я бы даже посмел назвать джаву УГ.

Alex KuznetsovА нынче что? Надо тебе по условию из массива объектов выборку -да пожалуйста вот тебе и LINQ в подмогу, нарисовал select и всех делов, а что там и как, да нахрена молодёжи знать-то... А потом голову ломают при чуть более сложной выборке и требованиям по скорости...
О какой скорости идет речь? Экономия на десятке процессорных тиков? Я не пишу какой-либо драйвер с нетривиальной алгоритмической оптимизацией. Экономия на коллекции из сотни миллионов элементов? Тогда разумный вопрос, что такая коллекция делает в твоем .NET приложении.

Alex KuznetsovВ общем, я то не против LINQ как такового, просто нужно понимать что это и для чего, а сам понимаешь, и думаю согласишься, что без знания основ и их глубокого понимания далеко не уедешь...
Ну в программировании в любом случае нужно понимать, для чего нужен тот или иной механизм. И не важно, LINQ ли это или какой-нибудь Reflection.

Alex KuznetsovДа и к тому-же для простого перегона из DataTable в object[x,y] достаточно простого цикла...
Зачем простой цикл? LINQ делает наш код более читабельным и ремонтопригодным.
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467940
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУНе первый раз замечаю, что ты ставишь акцент на ленивость. Причем тут LINQ и Lazy?Я про Lazy ничего не писал, ЛЕНИВЫЙ КЮ - это всего-лишь прикольное звучание от ЛИНКЬЮ, ну вот захотелось мне так...

МСУЛично мне LINQ очень сильно облегчает жизнь, это очень сильная технология, без которой я бы даже посмел назвать джаву УГ. Оченна рад за тебя. А вот птичку нашу обижать не надо (это я про джаву)

МСУО какой скорости идет речь? Экономия на десятке процессорных тиков? Я не пишу какой-либо драйвер с нетривиальной алгоритмической оптимизацией.Скорости, которая тратится на рефлексию и иже с ней... Да, не спорю, удобно нарисовать один селект нежели рисовать цикл и в нём прописывать логику выбора нужных записей, тем не менее, ещё раз повторю, надо понимать основы (это не к тебе) прежде чем использовать подобные мощные инструменты...

МСУЭкономия на коллекции из сотни миллионов элементов? Тогда разумный вопрос, что такая коллекция делает в твоем .NET приложении. За подобные "коллекции" я даю сильного пинка под зад с занесением, так сказать...

МСУЗачем простой цикл? LINQ делает наш код более читабельным и ремонтопригодным. Кому поп, кому попадья, а кому попова дочка...
Ну консервативен и занудлив я в некоторых вопросах... ну вот таков я... что-ж поделать-то ...
...
Рейтинг: 0 / 0
Из DataTable в двумерный массив
    #38467943
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsovну вот захотелось мне так...
Ок

Alex KuznetsovНу консервативен и занудлив я в некоторых вопросах... ну вот таков я... что-ж поделать-то ...
Не вопрос :)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Из DataTable в двумерный массив
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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