我有一个查询结果,生成如下内容:
用户ID | 交易ID | 其他多个栏目 |
---|---|---|
abc | asdf1234 | ...... |
定义 | qwer5678 | ...... |
abc | 1234asdf | ...... |
我想创建一个 userId 到事务列表的字典,其中事务应仅包含 transactionId 和其余列。可以从头开始执行此操作,方法是使用从 Reader 获取的值填充对象,然后使用 userId 和列表填充字典,然后将对象附加到列表,并对阅读器中的每个结果重复。
有没有一种内置的方法可以做到这一点,而无需所有手动处理?我已经看到了这个ToDictionary(),但我不确定是否可以扩展它以为每个键提供一个默认列表,将所有交易详细信息收集到交易dtos中,然后附加到列表中
使用 System.Linq,按
UserId
分组并转换为字典,键为:UserId
,值:List<Transaction>
。
using System.Collections.Generic;
using System.Linq;
Dictionary<string, List<Transaction>> result = transactions.GroupBy(x => x.UserId)
.ToDictionary(k => k.Key, v => v.ToList());
这取决于您的查询如何工作,如果您的查询在数据库端执行
GROUP BY
,您应该只将数据集转换为字典。否则,您执行分组并将其转换为内存中的字典逻辑。