C# Queryable Take() Method

The Take() method in C# is a LINQ extension method that returns a specified number of contiguous elements from the start of a sequence. It's commonly used with IQueryable collections to limit the number of results returned from a query.

Syntax

Following is the syntax for the Take() method −

public static IQueryable<TSource> Take<TSource>(
   this IQueryable<TSource> source, 
   int count
)

Parameters

  • source − The IQueryable<T> to return elements from.

  • count − The number of elements to return.

Return Value

Returns an IQueryable<T> that contains the specified number of elements from the start of the input sequence.

Using Take() with OrderByDescending

The following example demonstrates taking the top 5 highest marks from an array −

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      int[] marks = { 35, 72, 50, 90, 95, 85, 52, 67 };
      
      // Get top 5 highest marks
      IEnumerable<int> selMarks = marks.AsQueryable().OrderByDescending(s => s).Take(5);
      
      Console.WriteLine("Top 5 highest marks:");
      foreach (int res in selMarks) {
         Console.WriteLine(res);
      }
   }
}

The output of the above code is −

Top 5 highest marks:
95
90
85
72
67

Using Take() with Different Data Types

The Take() method works with any collection type. Here's an example with strings −

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      string[] cities = { "New York", "London", "Paris", "Tokyo", "Sydney", "Berlin" };
      
      // Take first 3 cities
      var firstThreeCities = cities.AsQueryable().Take(3);
      
      Console.WriteLine("First 3 cities:");
      foreach (string city in firstThreeCities) {
         Console.WriteLine(city);
      }
      
      // Take first 3 cities alphabetically
      var firstThreeAlphabetically = cities.AsQueryable().OrderBy(c => c).Take(3);
      
      Console.WriteLine("\nFirst 3 cities alphabetically:");
      foreach (string city in firstThreeAlphabetically) {
         Console.WriteLine(city);
      }
   }
}

The output of the above code is −

First 3 cities:
New York
London
Paris

First 3 cities alphabetically:
Berlin
London
New York

Using Take() for Pagination

The Take() method is commonly used with Skip() for pagination scenarios −

using System;
using System.Linq;
using System.Collections.Generic;

public class Demo {
   public static void Main() {
      int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
      
      // Page 1: Take first 5 elements
      var page1 = numbers.AsQueryable().Take(5);
      
      // Page 2: Skip first 5, then take next 5
      var page2 = numbers.AsQueryable().Skip(5).Take(5);
      
      // Page 3: Skip first 10, then take next 5
      var page3 = numbers.AsQueryable().Skip(10).Take(5);
      
      Console.WriteLine("Page 1:");
      foreach (int num in page1) {
         Console.Write(num + " ");
      }
      
      Console.WriteLine("\nPage 2:");
      foreach (int num in page2) {
         Console.Write(num + " ");
      }
      
      Console.WriteLine("\nPage 3:");
      foreach (int num in page3) {
         Console.Write(num + " ");
      }
      Console.WriteLine();
   }
}

The output of the above code is −

Page 1:
1 2 3 4 5 
Page 2:
6 7 8 9 10 
Page 3:
11 12 13 14 15 

Key Rules

  • If count is zero or negative, an empty sequence is returned.

  • If count is greater than the number of elements in the source, all elements are returned.

  • Take() does not modify the original sequence − it returns a new IQueryable.

  • The method uses deferred execution − the query is not executed until enumerated.

Conclusion

The Take() method is a powerful LINQ extension for limiting query results to a specified number of elements from the beginning of a sequence. It's particularly useful for implementing pagination, getting top N results, and controlling data retrieval in applications.

Updated on: 2026-03-17T07:04:35+05:30

3K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements