Обратите внимание, что myClass (p) работает нормально, так как я использую его в другом месте.
Этот факт совершенно не имеет отношения к реальной проблеме, сообщение об ошибке должно быть таким:
Cannot implicitly convert type 'System.Collections.Generic.List<T>' to 'System.Collections.Generic.List<System.Collections.Generic.List<T>>'
Как мы уже говорили в комментариях, вы можете изменить свой метод так, чтобы он возвращал List<List<T>>
:
public static List<List<myClass>> ToListsOfmyClass(this IEnumerable<IEnumerable<OtherClass>> listsOfOtherClass)
{
return listsOfOtherClass.Select(x => x.Select(p => new myClass(p)).ToList()).ToList();
}
, или добавить другой метод, где мы сгладим коллекцию и вернем List<T>
:
public static List<myClass> ToFlattenedListsOfmyClass(this IEnumerable<IEnumerable<OtherClass>> listsOfOtherClass)
{
return listsOfOtherClass.SelectMany(x => new myClass(p)).ToList();
}
Кроме того, по количеству сценариев ios, где, например, у нас есть 1000 таких классов, я бы подумал о добавлении обобщенного метода c или использовании инструмента, подобного AutoMapper
. Например:
public static List<List<To>> ToListsOfmyClass<From>(this IEnumerable<IEnumerable<From>> listsOfOtherClass) where From : IMyConvertible
{
return listsOfOtherClass.Select(x => x.Select(p => p.Convert<To>()).ToList()).ToList();
}
interface IMyConvertible { ... }
Для реализации метода .Convert
из интерфейса IMyConvertible
потребуется
From