Преобразование list в list - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, недавно начал изучать с#. Накопилось много вопросов) но сейчас интересует один конкретный. объём кода - пара сотен строк и дюжина классов...так что думаю, будет проблематично всю сюда свалить (сам вопрос внизу. Описание самой программы можно даже не читать. Читать его нужно только, если то, о чём я спрашиваю - реализовать нельзя.) Смысл такой: будет серия похожих программ, которые сравниваю 2 версии "чего-то там" (хранятся на SQL). Чтобы не писать каждый раз с нуля, я решил сделать 2 части проекта: 1 - базовая часть. Туда входят: -классы, необходимые для распознавания изменений в разных версиях "чего-то там"(нас интересует только великий "БАЗОВЫЙ ТИП", по которому, собственно, и вопрос.) -базовые классы, представляющие общие свойства, методы этого "чего-то там" -интерфейсы и абстрактные классы (один из которых содержит интерфейс доступа к данным SQL базы - назовём его "ConnectorBase") 2 - сменная часть. Туда входят: -производные от базовых классов и интерфейсов из пункта 1. Для нас важны: наследник "БАЗОВОГО ТИПА" - назовём его "ПРОИЗВОДНЫЙ ТИП" и наследник абстрактного класса, отвечающий за доступ к sql серверу (назовём его "Connector"), т.к. именно он и формирует и сам запрос, а также преобразует результат запроса в List<"ПРОИЗВОДНЫЙ ТИП"> Две части связываются вместе с помощью моего собственного простенького "IoC-Контейнера". Как это работает: класс "Connector" создаёт "List<Производный тип>", преобразует его в "List<Базовый тип>" и передаёт классу из части 1 класс из части 1 хранит полученный "List<Базовый тип>" и, с помощью своих методов формирует разные новые List<Базовый тип>, в которые входят некоторые элементы из старого списка. В принципе всё - вот этот новый List<Базового типа> - это ответ, но в последующей части программы, мне нужно преобразовать "ответ" List<Базовый тип> в List<Производный тип>. В этом вся проблемма Решил я пока её плохо - создавать ещё один НОВЫЙ List<Производный тип> и, с помощью foreach и преобразования копировать элементы из List<Базовый> в List<Производный>. Хочется сделать что-то такое
List<VersionInfoBasic.VersionInfoBasic> list = a.GetDeleted();
var c = list as List<VersionInfoStrukturaKompleksa>;
Есть ещё 1 вариант - везде использовать "производный тип". Но тогда часть 1 станет зависимой от части 2. И мне придётся писать больше кода - так себе затея.

Сам вопрос

- можно ли как-то преобразовать List<ПроизводныйТип> в List<БазовыйТип> (ну и наоборот), не прибегая к foreach для каждого элемента списка. (мне уже советовали LINQ выражения, о которых я пока ничего не знаю, но сказали, что принцип его работы такой же, как и у foreach). и далее, если нельзя...то насколько "правильной" можно считать программу (описанную выше) которая для своей работы создаёт ПроизводныйТип, потом преобразует его в БазовыйТип, работает с ним, а, для получения конечного ответа, преобразует его опять же в ПроизводныйТип

Решение задачи: «Преобразование list в list»

textual
Листинг программы
    public class shab<T> where T : VersionInfoBasic
    {
        public shab(T ob)
        {
            ob.Print();
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5
Похожие ответы