Преобразуйте Список (объекта) для Списка (строки)

Я бы настоятельно рекомендовал избегать Solr родитель / дочерние отношения. Мы решили использовать их в Solr 5.3.1, и оказалось, что, хотя большая часть функциональности присутствует, в Solr существует ряд неприятных ошибок, начиная с 4.x, которые остаются нефиксированными, включая

  • SOLR-6096 : поддержка обновления и удаления во вложенных документах
  • SOLR-5211 : обновление родителя, поскольку бездетное делает старых детей сиротами
  • SOLR-6596 : атомарное обновление и добавление дочернего документа не работают вместе
  • SOLR-5772 : дубликаты документов между документами solr «block join» и «нормальным» документом
  • [ 1110] SOLR-10030 : метод SolrClient.getById () в Solrj не извлекает дочерние документы

По этим причинам, если это вообще возможно, я настоятельно рекомендую ИЗБЕГАТЬ, используя дочерние документы. Даже если эти проблемы вас не коснутся сейчас, они будут решаться в будущем в какой-то момент, и ясно, что они не были исправлены в 3-4 основных версиях, что в продукте нет реальной поддержки для дочерних документов. Извините, что несу плохие новости, но, надеюсь, кто-то может извлечь уроки из нашего опыта.

69
задан Luke Girvin 6 February 2019 в 16:19
поделиться

5 ответов

Не возможный, не выполняя итерации для создания нового списка. Можно перенести список в контейнер, который реализует IList.

можно использовать LINQ для получения ленивой оцененной версии IEnumerable<string> из списка объектов как это:

var stringList = myList.OfType<string>();
74
ответ дан Mehrdad Afshari 24 November 2019 в 13:45
поделиться

Если Вы хотите больше управления тем, как преобразование происходит, можно использовать ConvertAll:

var stringList = myList.ConvertAll(obj => obj.SomeToStringMethod());
24
ответ дан Daniel Schaffer 24 November 2019 в 13:45
поделиться

Вы имеете в виду что-то вроде этого?

List<object> objects = new List<object>();
var strings = (from o in objects
              select o.ToString()).ToList();
10
ответ дан ctacke 24 November 2019 в 13:45
поделиться

Нет - если Вы хотите преобразовать ВЕСЬ элементы списка, необходимо будет затронуть ВЕСЬ элементы того списка так или иначе.

можно указать / пишут повторение по-разному (foreach ()......, или.ConvertAll () или безотносительно), но в конце, так или иначе, некоторый код собирается выполнить итерации по каждому элементу и преобразовать его.

Marc

3
ответ дан marc_s 24 November 2019 в 13:45
поделиться

Можно ли сделать преобразование строк, в то время как Список (объекта) создается? Это было бы единственным способом постараться не перечислять целый список после того, как Список (объекта) был создан.

1
ответ дан Ben Robbins 24 November 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: