June 11, 2024

JaiHoDevs

What is tolist vs tolistasync with example in c#

In C#, ToList() and ToListAsync() are both methods used to asynchronously convert an IEnumerable<T> or IQueryable<T> to a List<T>. However, they differ in terms of their synchronous and asynchronous behavior:

ToList():

  • ToList() is a synchronous method that immediately executes the query and returns a List<T> containing the results.
  • It is useful when you want to eagerly execute the query and materialize the results synchronously.
  • This method may block the current thread until the query completes and the results are fully fetched.

ToListAsync():

  • ToListAsync() is an asynchronous method that asynchronously executes the query and returns a Task<List<T>> representing the asynchronous operation.
  • It is useful when you want to execute the query asynchronously, allowing the calling thread to remain unblocked and responsive.
  • This method is typically preferred in asynchronous programming scenarios to avoid blocking the calling thread while waiting for the query to complete.


What is tolist vs tolistasync with example in c#


Here's a comparison of their usage:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Threading.Tasks;


class Program

{

    static async Task Main()

    {

        // Example IQueryable query

        IQueryable<int> queryable = Enumerable.Range(1, 100).AsQueryable();


        // Synchronous execution using ToList()

        List<int> synchronousList = queryable.Where(x => x % 2 == 0).ToList();

        Console.WriteLine($"Synchronous list count: {synchronousList.Count}");


        // Asynchronous execution using ToListAsync()

        List<int> asynchronousList = await queryable.Where(x => x % 2 == 0).ToListAsync();

        Console.WriteLine($"Asynchronous list count: {asynchronousList.Count}");

    }

}

In this example, ToList() is used synchronously to immediately execute the query and create a list of even numbers, while ToListAsync() is used asynchronously to execute the same query but in an asynchronous manner.


Subscribe to get more Posts :