将查询结果转换为字符串字典来列出

问题描述 投票:0回答:1

我有一个查询结果,生成如下内容:

用户ID 交易ID 其他多个栏目
abc asdf1234 ......
定义 qwer5678 ......
abc 1234asdf ......

我想创建一个 userId 到事务列表的字典,其中事务应仅包含 transactionId 和其余列。可以从头开始执行此操作,方法是使用从 Reader 获取的值填充对象,然后使用 userId 和列表填充字典,然后将对象附加到列表,并对阅读器中的每个结果重复。

有没有一种内置的方法可以做到这一点,而无需所有手动处理?我已经看到了这个ToDictionary(),但我不确定是否可以扩展它以为每个键提供一个默认列表,将所有交易详细信息收集到交易dtos中,然后附加到列表中

c# dapper
1个回答
0
投票

使用 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
,您应该只将数据集转换为字典。否则,您执行分组并将其转换为内存中的字典逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.