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

如何将LINQ查询生成的列表数据填充为指定结构的字典?

可行,用LINQ可以直接实现

假设你的原始列表元素是包含ID和CODE属性的对象(比如自定义类DataItem),可以通过GroupBy结合ToDictionary一步完成转换:

// 先定义数据类示例(如果已有对应实体类可忽略)
public class DataItem 
{ 
    public int ID { get; set; } 
    public int CODE { get; set; } 
}

// 假设原始数据列表为List<DataItem> dataList
var myDict = dataList
    .GroupBy(item => item.ID)
    .ToDictionary(
        group => group.Key,
        group => group.Select(item => item.CODE).ToHashSet() // 用HashSet对应你示例里的集合格式
    );

如果需要值为普通列表,把ToHashSet()换成ToList()即可:

var myDict = dataList
    .GroupBy(item => item.ID)
    .ToDictionary(
        group => group.Key,
        group => group.Select(item => item.CODE).ToList()
    );

逻辑说明

  • GroupBy(item => item.ID)会将原始列表按ID分组,每个组包含对应ID的所有数据对象
  • ToDictionary将分组结果转为字典,键是分组的ID,值是从组中提取的所有CODE组成的集合

如果你的原始数据是字符串文本行(如示例中的格式),可以先解析成实体对象再执行上述逻辑:

// 假设原始文本行存储在List<string> lines中
var dataList = lines.Select(line => {
    // 处理逗号、等号、空格混合的分隔情况
    var parts = line.Split(new[] {',', '='}, StringSplitOptions.RemoveEmptyEntries)
                    .Select(p => p.Trim())
                    .ToArray();
    return new DataItem {
        ID = int.Parse(parts[1]),
        CODE = int.Parse(parts[3])
    };
}).ToList();

// 再执行分组转字典操作
var myDict = dataList.GroupBy(item => item.ID)
                     .ToDictionary(g => g.Key, g => g.Select(i => i.CODE).ToHashSet());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 23:03:11