You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell根据SourceID查询CSV文件获取DestinationID

实现方法

你可以用以下几种高效方式实现根据SourceID查询对应DestinationID的需求:

方法1:单次查询直接过滤

如果只是偶尔查询一次,无需重复使用数据,可直接在导入CSV时过滤目标记录,提取对应的DestinationID:

# 查询SourceID等于1的记录,获取对应的DestinationID
$targetDestinationID = (Import-Csv C:\test.csv | Where-Object { $_.SourceID -eq 1 }).DestinationID
# 输出结果
$targetDestinationID

若存在多个SourceID=1的记录,上述代码会返回包含所有对应DestinationID的数组,你可按需遍历或处理。

方法2:构建哈希表实现快速多次查询

如果需要多次查询不同的SourceID,建议先将CSV数据转换成哈希表(键为SourceID,值为DestinationID),后续查询效率会更高:

# 导入CSV并构建哈希表
$idMap = @{}
Import-Csv C:\test.csv | ForEach-Object {
    # 若存在重复的SourceID,此处会覆盖之前的记录;若要保留所有结果,可改用数组存储
    $idMap[$_.SourceID] = $_.DestinationID
}

# 查询SourceID=1对应的DestinationID
$targetDestinationID = $idMap['1']
# 输出结果
$targetDestinationID

如果CSV里有重复的SourceID,需要保留所有对应的DestinationID,可将哈希表的值设为数组:

$idMap = @{}
Import-Csv C:\test.csv | ForEach-Object {
    if (-not $idMap.ContainsKey($_.SourceID)) {
        $idMap[$_.SourceID] = @()
    }
    $idMap[$_.SourceID] += $_.DestinationID
}

# 查询SourceID=1的所有DestinationID
$idMap['1']

你原本拆分两个字段到独立数组的做法其实没必要,直接基于Import-Csv返回的对象集合或构建哈希表,能更直观高效地实现查询需求。

内容的提问来源于stack exchange,提问作者John John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:40:27