c# - 两个字典的最佳合并(但首先是异步输出问题)
问题描述
我有一个字典 A,需要从 B 添加元素,两者都是相同的 IDictionary 类型。如果有任何后果,则 A 为空,因此没有要保留的数据或潜在的密钥冲突。
由于其他原因(我使用的异步方法不支持 out 参数并且我不能使用Task<(bool, IDictionary<TKey, T>)>
方法,因为我必须多次(多次)并行调用此任务作为List<Task<bool>>
对于最终具有 WhenAll/Aggregate 结果的不同查找对象。T
类型没有共同的祖先,是 POCO 类,我真的不想将它们全部从IDictionary<bool, object>
. 所以我必须给异步方法一个已经创建的字典来填充。
我使用的方法是手动迭代结果并将元素添加到已经预先创建的未提供的字典中。
static async Task<bool> InternalLoadSqlDictionary<TKey, T>(IContextFactory dbContextFactory, IDictionary<TKey, T> outputSink, Func<T, TKey> keySelector) where T: class
{
...
await using var dbc = dbContextFactory.GetContext();
var result = await dbc.Set<T>().AsNoTracking().ToListAsync().ConfigureAwait(false);
foreach (var e in result) outputSink.Add(keySelector(e), e);
return true;
这对我来说似乎不是最理想的。有没有办法更有效地做到这一点,用新数据重新初始化字典而不破坏引用等。然后我可能会使用.ToDictionaryAsync(keySelector)
而不是使用临时列表。
解决方案
推荐阅读
- c# - 如何在reactjs中的C#中将查询结果的值存储在2个不同的变量中
- reactjs - 如何在 pdf 中转换文件并在 react native 中下载
- security - 有没有办法使用 GraphQL 从 GitHub 安全公告数据库中提取特定存储库的安全公告?
- jenkins - 在 Jenkins 的框中将活动的选定参数显示为逗号分隔值
- javascript - 为什么特定的 cookie 总是返回 undefined?
- python - 打开 chrome webdriver 后 Python 脚本崩溃
- c# - 元组
与 GroupBy - reactjs - 处理多个 useEffect 挂钩
- python - python中的正则表达式负前瞻
- typescript - 类型 SomeType[number] 不能分配给 SomeType[number] ...嗯?