Method ToDictionaryAsync
- Namespace
- Open.Database.Extensions
- Assembly
- Open.Database.Extensions.Core.dll
ToDictionaryAsync<T, TKey>(IMappedQuery<T>, Func<T, TKey>, IEqualityComparer<TKey>?, CancellationToken)
Asynchronously reads every mapped row into a new Dictionary<TKey, TValue>, keyed by keySelector.
public static ValueTask<Dictionary<TKey, T>> ToDictionaryAsync<T, TKey>(this IMappedQuery<T> query, Func<T, TKey> keySelector, IEqualityComparer<TKey>? comparer = null, CancellationToken cancellationToken = default) where TKey : notnull
Parameters
queryIMappedQuery<T>The query to execute.
keySelectorFunc<T, TKey>Produces the key for each mapped row.
comparerIEqualityComparer<TKey>The comparer for the keys, or null to use the default comparer.
cancellationTokenCancellationTokenCancels the operation. When it cannot be canceled, the cancellation token set on the underlying command applies.
Returns
- ValueTask<Dictionary<TKey, T>>
A task that produces a dictionary of all the rows.
Type Parameters
TThe type each row is mapped to.
TKeyThe type of the dictionary key.
Remarks
All rows are buffered in memory before the call returns. Use Read(Action<IEnumerable<T>>) to process very large results as a stream.
Exceptions
- OperationCanceledException
The operation was canceled.
- ArgumentNullException
keySelectoris null.- ArgumentException
Two rows produce the same key.
- See Also
-
ToArray<T>(IMappedQuery<T>)