gpt4 book ai didi

c# - 如何基于多个 IEnumerables 创建一个集合

转载 作者:行者123 更新时间:2023-11-30 13:42:19 25 4
gpt4 key购买 nike

我要操作的类提供类型为 IEnumerable<X> 的 getter和 IEnumerable<Y>其中 X 和 Y 是基本类型 T 的子类。我想遍历将它们都视为类型 T 的内容。有没有一种方便的方法可以将两者连接成可以看作是 IEnumerable<T> 的东西? ?

例子:

        IEnumerable<HeaderPart> headers = templateFile.MainDocumentPart.HeaderParts;
IEnumerable<FooterPart> footers = templateFile.MainDocumentPart.FooterParts;
List<OpenXmlPart> result = new List<OpenXmlPart>();
result.Concat<OpenXmlPart>(footers);

HeaderPart 和 FooterPart 都是 OpenXmlPart 的子类,但第 3 行失败:

'System.Collections.Generic.IEnumerable' does not contain a definition for 'Concat' and the best extension method overload 'System.Linq.Enumerable.Concat(System.Collections.Generic.IEnumerable, System.Collections.Generic.IEnumerable)' has some invalid arguments

请注意,我无法更改任何一个源数据,我需要创建一个新集合 - 实际上我想做一个 foreach在上面。

最佳答案

您可以使用 Cast 函数来转换 IEnumerable<X>IEnumerable<T>然后 Concat附加第二个系列

类似于:

listB.Cast<A>().Concat(listC.Cast<A>())

关于c# - 如何基于多个 IEnumerables 创建一个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3317546/

25 4 0