[英]How can I make an extension for a list of lists
如果可能,我想為列表列表進行擴展。 我已經嘗試過這個主題的變體,但沒有一個奏效:
public static List<List<myClass>> ToListsOfmyClass(this IEnumerable<IEnumerable<OtherClass>> listsOfOtherClass)
{
return listsOfOtherClass.SelectMany(many => many.Select(p => new myClass(p)).ToList()).ToList();
}
我收到以下編譯錯誤:
錯誤 CS0029 無法將類型“System.Collections.Generic.List”隱式轉換為“System.Collections.Generic.List>”SSX.Revit.Access D:\\SourceCode\\WorkSpaces\\AllProjects\\SSX.Revit\\r2020 (v.20) \\Startup(插件)\\v1.0\\SSX.Revit.Access\\Support\\AIMPoint.cs 67 Active
請注意 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();
}
AutoMapper
說一句,在許多場景中,例如我們有 1000 個這樣的類,我會考慮添加一個通用方法或使用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 { ... }
這需要From
實現方法.Convert
從接口IMyConvertible
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.