Дневник сертифицированного .NET разработчика. Заметки, советы, новости из мира .NET и C#.
Для связи: @SBenzenko
Поддержать канал:
- https://boosty.to/netdeveloperdiary
- https://patreon.com/user?u=52551826
- https://pay.cloudtips.ru/p/70df3b3b
Post #3029
2.63K
День 2517. #TipsAndTricks
ToArrayAsync или ToListAsync в Entity Framework?
Очевидно, каждый из методов нужно использовать в подходящей для него ситуации. Но если это не важно, какой лучше? Короткий ответ: ToListAsync.
Посмотрим код. ToListAsync реализован следующим образом:
См. источник
А ToArrayAsync реализован так:
См. источник
Таким образом, ToArrayAsync сначала вызывает ToListAsync, а затем преобразует полученный список в массив с помощью ToArray(). В результате возникают накладные расходы на создание списка, его заполнение, а затем создание массива и копирование элементов.
Это не относится к ToHashSetAsync, он реализован аналогично ToListAsync.
Источник: https://steven-giesel.com/blogPost/55dbb67c-cd14-444f-81e8-dec9f5ce1448/one-minute-knowledge-is-toarrayasync-or-tolistasync-faster-for-entity-framework
ToArrayAsync или ToListAsync в Entity Framework?
Очевидно, каждый из методов нужно использовать в подходящей для него ситуации. Но если это не важно, какой лучше? Короткий ответ: ToListAsync.
Посмотрим код. ToListAsync реализован следующим образом:
public static async Task<List<TSource>>
ToListAsync<TSource>(
this IQueryable<TSource> source,
CancellationToken cancellationToken = default)
{
var list = new List<TSource>();
await foreach (var element in
source
.AsAsyncEnumerable()
.WithCancellation(cancellationToken)
.ConfigureAwait(false))
{
list.Add(element);
}
return list;
}
См. источник
А ToArrayAsync реализован так:
public static async Task<TSource[]>
ToArrayAsync<TSource>(
this IQueryable<TSource> source,
CancellationToken cancellationToken = default)
=> (
await source
.ToListAsync(cancellationToken)
.ConfigureAwait(false))
.ToArray();
См. источник
Таким образом, ToArrayAsync сначала вызывает ToListAsync, а затем преобразует полученный список в массив с помощью ToArray(). В результате возникают накладные расходы на создание списка, его заполнение, а затем создание массива и копирование элементов.
Это не относится к ToHashSetAsync, он реализован аналогично ToListAsync.
Источник: https://steven-giesel.com/blogPost/55dbb67c-cd14-444f-81e8-dec9f5ce1448/one-minute-knowledge-is-toarrayasync-or-tolistasync-faster-for-entity-framework
- 👍 30







