首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个FileSystemInfo数组合并为一个FileSystemInfo集合

将多个FileSystemInfo数组合并为一个FileSystemInfo集合
EN

Stack Overflow用户
提问于 2020-01-30 15:29:54
回答 2查看 92关注 0票数 1

我已经使用FileSystemInfo()方法从五个不同的目录创建了五个DirectoryInfo.GetFileSystemInfos()数组。

我需要知道如何将这五个FileSystemInfo数组组合成一个集合,或者如何从五个不同的目录中获得一个FileSystemInfo集合。

例如:

代码语言:javascript
复制
Dim dir1 As New DirectoryInfo(str_fromPath1)
Dim dir2 As New DirectoryInfo(str_fromPath2)
Dim dir3 As New DirectoryInfo(str_fromPath3)
Dim dir4 As New DirectoryInfo(str_fromPath4)
Dim dir5 As New DirectoryInfo(str_fromPath5)

Dim FSinfo1 As FileSystemInfo() = dir1.GetFileSystemInfos
Dim FSinfo2 As FileSystemInfo() = dir2.GetFileSystemInfos
Dim FSinfo3 As FileSystemInfo() = dir3.GetFileSystemInfos
Dim FSinfo4 As FileSystemInfo() = dir4.GetFileSystemInfos
Dim FSinfo5 As FileSystemInfo() = dir5.GetFileSystemInfos

Dim SINGLE_FSinfo_ALL As FileSystemInfo   ???
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-30 16:24:17

您可以将所有数组分组到一个容器中,并使用Linq的SelectMany()从包括的所有子数组的内容中生成List(Of FileSystemInfo)

或者以类似的方式创建一个新数组:

从所有现有数组生成一个List(Of FileSystemInfo)

代码语言:javascript
复制
Dim fsInfoList = {FSinfo1, FSinfo2, FSinfo3}.SelectMany(Function(arr) arr).ToList()

或者生成一个新的FileSystemInfo()数组,它是所有其他数组的总和:

代码语言:javascript
复制
Dim fsInfo_All() = {FSinfo1, FSinfo2, FSinfo3}.SelectMany(Function(arr) arr).ToArray()

或者生成一个FileSystemInfo()()锯齿数组。

在这种情况下,单个数组集合中的所有元素都与其他元素不同,仍然可以使用旧索引访问:

代码语言:javascript
复制
Dim fsInfo_All = {FSinfo1, FSinfo2, FSinfo3}

►的另一种可能性。为什么不从一开始就将FileInfo()数组组织在一个集合中,然后在需要时提取所有(或子集)的内容?

例如,使用Dictionary(Of String, FileSystemInfo())

代码语言:javascript
复制
Dim allDirectories As New Dictionary(Of String, FileSystemInfo())()
allDirectories.Add("Some Path", New DirectoryInfo(SomePath).GetFileSystemInfos())
allDirectories.Add("Search Result", New DirectoryInfo(AnotherPath).GetFileSystemInfos())

' fsInfoAll is a List(Of FileSystemInfo)
Dim fsInfoAll = allDirectories.SelectMany(Function(dict) dict.Value).ToList()

在这种情况下,还可以按键或索引访问单个集合。

票数 1
EN

Stack Overflow用户

发布于 2020-01-30 16:07:57

像这样

代码语言:javascript
复制
    Dim SINGLE_FSinfo_ALL As New List(Of FileSystemInfo)
    SINGLE_FSinfo_ALL.AddRange(FSinfo1)
    SINGLE_FSinfo_ALL.AddRange(FSinfo2)
    '...  etc.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59989369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档