如何将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
相关产品推荐
相关产品推荐

