Рубрики

LINQ | Оператор раздела | TakeWhile

В LINQ операторы разбиения используются для разделения данной последовательности на две части без сортировки элементов и возврата одной из частей. Стандартные операторы запросов поддерживают 4 различных типа операторов секционирования:

  1. Пропускать
  2. SkipWhile
  3. принимать
  4. TakeWhile

TakeWhile Оператор

Оператор TakeWhile используется для возврата элементов из данной последовательности, если он удовлетворяет данному условию и когда условие удовлетворяет, он пропускает те элементы, которые не удовлетворяют данному условию. Этот метод перегружен двумя разными способами :

  • TakeWhile <TSource> (IEnumerable <TSource>, Func <TSource, Boolean>): этот метод используется для возврата элементов из данной последовательности, если заданное условие выполняется.
  • TakeWhile <TSource> (IEnumerable <TSource>, Func <TSource, Int32, Boolean>): этот метод используется для возврата элементов из данной последовательности, если заданное условие выполняется. Значение индекса элементов используется в логике функции предиката.

Важные моменты:

  • Он не поддерживает синтаксис запросов в языках C # и VB.Net. Но вы можете использовать метод TakeWhile для запроса переменной или вы можете заключить запрос в квадратные скобки, а затем вызвать метод TakeWhile.
  • Он поддерживает синтаксис методов на языках C # и VB.Net.
  • Он присутствует в классах Queryable и Enumerable.
  • Это реализуется с помощью отложенного выполнения.
  • Он выдаст исключение ArgumentNullException, если источник или условие имеют значение null.

Пример 1:

// C # программа для иллюстрации
// концепция оператора TakeWhile

using System;

using System.Linq;

  

class GFG {

  

    static public void Main()

    {

  

        // Источник данных

        int[] sequence = {45, 67, 89, 13, 56,

                                76, 100, 90};

  

        // Запрос, чтобы выбрать эти элементы

        // которые меньше 70

        // Использование метода TakeWhile

        var result = sequence.OrderBy(s => s).TakeWhile(s => s < 70);

  

        Console.WriteLine("New Sequence: ");

  

        // Показать новую последовательность

        foreach(var val in result)

        {

            Console.WriteLine(val);

        }

    }

}

Выход:

New Sequence: 
13
45
56
67

Пример 2:

// C # программа для получения имен
// сотрудники, чья зарплата меньше
// чем 50000

using System;

using System.Linq;

using System.Collections.Generic;

  
// Данные сотрудника

public class Employee {

  

    public int emp_id

    {

        get;

        set;

    }

    public string emp_name

    {

        get;

        set;

    }

    public string emp_gender

    {

        get;

        set;

    }

    public string emp_hire_date

    {

        get;

        set;

    }

    public int emp_salary

    {

        get;

        set;

    }

}

  

public class GFG {

  

    // Основной метод

    static public void Main()

    {

  

        List<Employee> emp = new List<Employee>() {

  

            new Employee() {emp_id = 209, emp_name = "Anjita", emp_gender = "Female",

                                    emp_hire_date = "12/3/2017", emp_salary = 20000},

  

            new Employee() {emp_id = 210, emp_name = "Soniya", emp_gender = "Female",

                                    emp_hire_date = "22/4/2018", emp_salary = 30000},

  

            new Employee() {emp_id = 211, emp_name = "Rohit", emp_gender = "Male",

                                  emp_hire_date = "3/5/2016", emp_salary = 40000},

  

            new Employee() {emp_id = 212, emp_name = "Anu", emp_gender = "Female",

                                  emp_hire_date = "4/8/2017", emp_salary = 80000},

  

            new Employee() {emp_id = 213, emp_name = "Anil", emp_gender = "Male",

                                emp_hire_date = "12/1/2016", emp_salary = 60000},

  

            new Employee() {emp_id = 214, emp_name = "Anju", emp_gender = "Female",

                                  emp_hire_date = "17/6/2015", emp_salary = 50000},

        };

  

        // Запрос, чтобы получить имена

        // сотрудники, чья зарплата меньше

        // 50000 с использованием метода TakeWhile

        var res = emp.TakeWhile(e => e.emp_salary < 50000);

  

        foreach(var val in res)

        {

            Console.WriteLine("Employee Name: {0}",

                                     val.emp_name);

        }

    }

}

Выход:

Employee Name: Anjita
Employee Name: Soniya
Employee Name: Rohit

Рекомендуемые посты:

LINQ | Оператор раздела | TakeWhile

0.00 (0%) 0 votes