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

如何用C# LINQ将分组数据转为值为字符串列表的字典

解决思路与修正代码

你的问题核心在于ToDictionary的value选择逻辑:原代码用data.First()[2]仅提取了每组的第一个元素的第三个值,而非收集组内所有匹配元素的第三个值。只需调整这部分逻辑,即可生成目标格式的字典:

修正后的代码:

var dimData = System.IO.File.ReadLines(PathofOutputFile)
                  .Select(line => line.Split(';'))
                  .GroupBy(data => data[0], StringComparer.OrdinalIgnoreCase)
                  .ToDictionary(
                      group => group.Key,
                      group => group.Select(item => item[2]).ToList(),
                      StringComparer.OrdinalIgnoreCase
                  );

关键修改说明

  • 将data => data.First()[2]替换为group => group.Select(item => item[2]).ToList():
    • group.Select(item => item[2])遍历分组内的所有字符串数组,提取每个数组的第三个元素(索引为2)
    • .ToList()将提取出的所有字符串转换为List<string>,完美匹配Dictionary<string, List<string>>的类型要求

可选健壮性优化

如果CSV文件中存在分割后元素不足3个的行,建议添加过滤逻辑避免索引越界:

var dimData = System.IO.File.ReadLines(PathofOutputFile)
                    .Select(line => line.Split(';'))
                    .Where(arr => arr.Length >= 3) // 过滤无效行
                    .GroupBy(data => data[0], StringComparer.OrdinalIgnoreCase)
                    .ToDictionary(
                        group => group.Key,
                        group => group.Select(item => item[2]).ToList(),
                        StringComparer.OrdinalIgnoreCase
                    );

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:32:03