【发布时间】:2016-08-25 08:55:08
【问题描述】:
假设我有一个IEnumerable(Of IEnumerable(Of Integer))。所有内部IEnumerables 都包含IDs。我想将所有IDsDistinctly 收集到IEnumerable(Of Integer) 中。如果我这样做,我可以做到这一点:
Dim result as New List(Of Integer)
For Each element In IDs
result.AddRange(element)
Next
result = result.Distinct
这种方法有两个问题:
- 当可能有Function 用于此目的时,我必须编写迭代代码,但我不知道
- 结果是List,我想保留内部IEnumerable的类
有没有方便的 LINQ 方法来做到这一点?
编辑:
这个问题不同于this one,因为我说的是IEnumerables,而不是Lists。是的,我知道每个List 都是IEnumerable,但我也知道并非每个IEnumerable 都是List。因此,这是一个比标记为重复的问题更普遍的问题,正如我在原始问题中指定的那样,我想在结果中保留内部 IEnumerable 的 Class。如果是数组,我更喜欢使用数组。
【问题讨论】:
-
一个
List是一个IEnumerable -
@KeithMifsud,我在询问 IEnumerables。如果它们是数组,我希望结果也是数组。这是一个更普遍的问题。
-
嘿,我只是想保持清洁。问题是重复的,答案也是重复的。你想要
IEnumerable,而老问题是List' which is an 'Ienumerabe,所以解决方案的工作原理完全相同 -
通过编辑我终于明白了这个问题(关于内部类的一点。简单地说,你不能;我可以通过
IEnumerable(Of (IReadOnlyCollection(Of T));我可以通过IEnumerable(Of MyCustomThing)与 MyCustomThing 实现 IEnumerable。该方法应该如何知道如何向它们添加项目。您仍然可以将结果的“形状”推迟给调用者(由他决定将结果转换为他想要的)或使用重载为他利用这些“转换”(对于“已知”案例)
标签: vb.net linq ienumerable