簡體   English   中英

如何為列表列表進行擴展

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM