Рубрики

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

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

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

SkipWhile Operator

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

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

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

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

Пример 1:

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

using System;

using System.Linq;

  

class GFG {

  

    static public void Main()

    {

  

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

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

                             56, 76, 67};

  

        // Запрос, который пропускает

        // элементы меньше 67

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

        var result = sequence.OrderBy(s => s).SkipWhile(s => s < 67);

        Console.WriteLine("Sequence: ");

  

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

        foreach(var val in result)

        {

            Console.WriteLine(val);

        }

    }

}

Выход:

Sequence: 
67
67
76
89

Пример 2:

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

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}, 

    }; 

          

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

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

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

    var res = emp.SkipWhile(e=> e.emp_name.Length > 4);

              

    foreach(var val in res) 

    

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

                                 val.emp_name); 

    

      

    

Выход:

Employee Name: Anu
Employee Name: Anil
Employee Name: Anju

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

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

0.00 (0%) 0 votes