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();
Хотя у меня нет абсолютно никаких проблем с отрицательным голосованием, делать это без конструктивной критики - это все равно, что проходить мимо кого-то и бить его, не говоря им, почему, а затем просто уходить. Ни один из которых не способствует здоровому, поддерживающему сообществу. Как насчет того, чтобы помочь друг другу стать лучшими разработчиками и, тем самым, улучшить сообщество в целом?