C# AddRange с ForEach

Я пытаюсь использовать AddRange добавить список предметов и ForEach транспонировать данные в одном классе в другой класс.

Я уверен, что это должен быть дубликат, но я просто не могу найти вопрос, который соответствует тому, что я пытаюсь сделать, все они, кажется, работают с одним и тем же типом, в то время как у меня два разных типа.

У меня есть два класса, которые похожи, но не то же самое (я попытался упростить для иллюстрации):

public sealed class MyCurrentVar
{
    public string Name { get; set; }
    public string SomeOtherVar { get; set; }
}

public sealed class MyNewVar
{
    public string Name { get; set; }
    public string DifferentVar { get; set; }
}

MyCurrentVar Затем класс инициализируется:

List<MyCurrentVar> MyCurrentVars = new List<MyCurrentVar>
{
    new MyCurrentVar()
    {
        Name = "Foo",
        SomeOtherVar = "Bar"
    }
};

Затем я пытаюсь инициализировать второй класс и перенести данные из первого класса, где я получаю сообщение об ошибке:

cannot convert from 'void' to 'System.Collections.Generic.IEnumerable<MyNewVar>':

List<MyNewVar> MyNewVars = new List<MyNewVar>().AddRange
(
    MyCurrentVars.ForEach
    (
        new MyNewVar.OtherClass()
        {
            Name = myVar.Name
        }
    )
);

** Изменить **: Оказалось, что я был на правильном пути, просто нужно немного настроить код для использования Select, а не AddRange.

List<MyNewVar> MyNewVars = MyCurrentVars.Select
(
    myVar => new MyNewVar()
    {
        Name = myVar.Name
    }
).ToList();

Хотя у меня нет абсолютно никаких проблем с отрицательным голосованием, делать это без конструктивной критики - это все равно, что проходить мимо кого-то и бить его, не говоря им, почему, а затем просто уходить. Ни один из которых не способствует здоровому, поддерживающему сообществу. Как насчет того, чтобы помочь друг другу стать лучшими разработчиками и, тем самым, улучшить сообщество в целом?

0 ответов

Другие вопросы по тегам