powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Удаление записей из DataTable по условию.
9 сообщений из 9, страница 1 из 1
Удаление записей из DataTable по условию.
    #38105889
Gray_Wolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть Datatable pn
Массив значений которые нужно удалить из Datatable - ign

Если в поле таблицы есть одно из значений перечисленных в ign , то эту строку необходимо удалить.
Решение "в лоб":
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        Dim rmarr As New ArrayList
        For i = 0 To pn.Rows.Count - 1
            For j = 0 To ign.Length - 1
                If pn.Rows(i).Item(2) = ign(j) Then rmarr.Add(i)
            Next j
        Next i
        For i = rmarr.Count - 1 To 0 Step -1
            pn.Rows.RemoveAt(rmarr.Item(i))
            MsgBox(rmarr.Item(i))
        Next i



Собственно вопрос, можно ли сделать тоже-самое, но используя инструменты появившиеся в .NET, для того чтобы код стал красивее/быстрее/правильнее?
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38105906
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gray_Wolf,

Код: c#
1.
pn.Rows.Cast<DataRow>().Join(ign.Rows.Cast<DataRow>(), a => a["поле для поиска в DataTable pn"], b => b["поле для поиска в DataTable ign"], (a, b) => a).ToList().ForEach(a => pn.Rows.Remove(a));
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38106152
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gray_Wolf,

Код надо писать не красивее, а понятнее.
Чтобы через три года ты сам, или любой гастарбайтер-программист,
даже после удавшегося корпоратива смог понять и изменить код.
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38106357
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarkanGray_Wolf,

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

Нет не надо, я не для того изучал программирование и около его науки, совершенствуя себя и свои знания годами, чтобы писать не оптимальный примитивный код на уровне шимпанзе для какого-то там гастарбайтера.
Есть инструмент и технология его использования - не умеешь - бери палку-копалку и копай жёлуди.
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38108736
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганыч,

Это смотря с какой стороны посмотреть.
С точки зрения бизнеса - по фигу на каком уровне написан правильно работающий код.
А стоимость владения, в том числе стоимость изменения, совсем НЕ по фигу.
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38108744
фиганыч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barkanфиганыч,

Это смотря с какой стороны посмотреть.
С точки зрения бизнеса - по фигу на каком уровне написан правильно работающий код.
А стоимость владения, в том числе стоимость изменения, совсем НЕ по фигу.

Заметим, что русский бизнес - бизнесом не считается - это тупое разовое выполнение заказа, рассчитанное на раз, а потом хоть трава не рости.
Как только возникает мало-мальски средне-долгосрочный проект - все эти гастор-шимпанзе вылетают к чертям без выходного пособия, и на смену им ищутся нормальные специалисты, у которых производительность труда выше поскольку они роют не палкой копалкой, а вполне себе даже новейшим экскаватором.
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38108761
Barkan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фиганыч,

Проект проекту рознь.
Например в моей конторе всё ещё эксплуатируются программы написанные
в 70х для ЕС ЭВМ (работают на персоналках под эмулятором).
Есть программист который иногда даже "ковыряется" в этом коде.
А теперь давай представим себе например 2030 год, или даже 2040 год.
Я конечно могу заблуждаться, но вот думаю что в светлом будущем
никто и не вспомнит про Linq, а вот перебор в цикле понятен будет любому.
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38108784
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barkanфиганыч,

Проект проекту рознь.
Например в моей конторе всё ещё эксплуатируются программы написанные
в 70х для ЕС ЭВМ (работают на персоналках под эмулятором).
Есть программист который иногда даже "ковыряется" в этом коде.
А теперь давай представим себе например 2030 год, или даже 2040 год.
Я конечно могу заблуждаться, но вот думаю что в светлом будущем
никто и не вспомнит про Linq, а вот перебор в цикле понятен будет любому.

А можно и сказать, что с приходом Linq в 2030 году никто не вспомнит про "перебор в цикле" :)
Линк кончено не панацея, но довольно часто 3-х этажные конструкции (с вынесенными методами) сворачивает во вполне понятные действия. Главное красиво оформить переносы и вложенности получившегося кода.




По теме:

Код: c#
1.
pn.Rows.Cast<DataRow>().Join(ign.Rows.Cast<DataRow>(), a => a["поле для поиска в DataTable pn"], b => b["поле для поиска в DataTable ign"], (a, b) => a).ToList().ForEach(a => pn.Rows.Remove(a));

Есть нюанс: pn.Rows.Cast<DataRow>() возвращает
Код: c#
1.
DataRow с RowState

==
Код: c#
1.
DataRowState.Deleted

.
Можно
Упадет, если в данных коллекциях были такие ряды.
...
Рейтинг: 0 / 0
Удаление записей из DataTable по условию.
    #38108923
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LameUser
А можно и сказать, что с приходом Linq в 2030 году никто не вспомнит про "перебор в цикле" :)
Линк кончено не панацея, но довольно часто 3-х этажные конструкции (с вынесенными методами) сворачивает во вполне понятные действия.
Линк конечно криво сделан, но как решение ,для выбора из 1000 строчек вроде добротно работает. если строчек много более - то тану ево впесту. черепаха ито быстрее.
а всякие елды и ас-паралели это мёртвому припарки
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Удаление записей из DataTable по условию.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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