Собрать список?
А вообще странные у тебя словия и задачи
-----
Чем странны мои пятничные задачки?
Тем, что заставляют/позволяют взглянуть на вполне традиционные исходные данные и решение и, потом, подумать над несколько нестандартным решением в непонятных ограничениях?
Ну так это пятничная задачка - возможность пошевелить мозгой, поупражнятся в извращениях, по-ошибаться и предложить что-то малоизвестное в качестве решения. И в результате - научится чему-то.
Решение, кстати, мне понравилось. Компактностью. Именно то, что хотел.
Осталась, у меня, проблема - понять как оно работает. Ну да это моя проблема - куда рыть уже примерно понятно, осталось - рыть.
Осталась, у меня, проблема - понять как оно работает.
Группирует по индексу и далее формирует строку string.Join'ом
Если индекс элемента в массиве поделить на необходимое количество элементов в строке, то получится признак, по которому можно группировать.
Все просто. Я правда сомневаюсь в эффективности этого решения, но зато без циклов :D
Группирует по индексу и далее формирует строку string.Join'ом
-----
Я понимаю что оно делает,
Я не понимаю как оно работает.
Т.е. не понимаю во что развернется выражение и как и какие параметры будут передаваться.
Пока - не понимаю. Надо копать.
Я правда сомневаюсь в эффективности этого решения
------
Решение - в указанных ограничениях - эффективно.
Остальное надо тестить, но будет не шибко плохо.
По крайней мере 30 строк с тремя циклами и пятеркой ифов - местами у меня именно так написано - эффективнее не будут.
У меня просто МНОГО кода. Любое сокращение объема - будет во благо. Даже с потерей производительности.
"удобнее"
------
Удобнее - бывает разное.
Мне сейчас удобнее - ужать размер кода, даже если Я чуток потеряю в производительности и малехо в читабельности/понимабельности.
Просто слишком много кода.
А понимабельность - придет со временем. Все одно эту часть придется доучивать. Еще и шаблоны в очереди...
Вот подвсплыло еще немного LINQ...
Код:
List<DataColumn> duplicatedColumns = dt.Columns.Cast<DataColumn>().Where(dc => additionalColumns.Any(p => p.ColumnName == dc.ColumnName)).ToList();foreach(DataColumn column in duplicatedColumns){dt.Columns.Remove(column);}
Делает простую работу - удаляет из таблицы колонки которые там уже есть и есть в списке additionalColumns.
Остальное - остается на месте.
Почему так - не суть важно, но если интересно - заменяется тип колонки и дефаултное значение.
Вопросик над которым думаю:
- Можно ли написать все тоже самое, но без цикла в конце?
Т.е. нужно чтобы дублирующие (по имени) колонки были удалены.
П.С. Про то, что LINQ не является языком манипулации данными Я в курсе. Как обойти?
П.П.С. Про то, что источник данных длйa итератора не должен менятся в процессе - разумеется тоже.
Снова споткнулся об гения билли...
Задача - та же - собрать список с разделителями.
Измемения - одна часть списка уже собрана. Источник первой части уже не доступен.
Ограничения - собранная часть может быть нулл или емпти.
Стринг.Йон нас нуллах просто обломается, для пустой строки - добавит ненужный сепаратор.
Облом - надо пересраивать логику построения...
Хватит ли Униона для решения проблемы?