📜  LINQ |过滤运算符|类型

📅  最后修改于: 2021-05-29 15:58:26             🧑  作者: Mango

过滤运算符符是用于根据用户要求从给定数据源或给定序列中过滤数据的那些运算符。例如,在员工记录中,我们希望获取年龄在21岁以下的员工的数据。因此,我们根据他们的年龄过滤记录。在LINQ中,可以使用以下运算符进行过滤:

  1. 在哪里
  2. 类型

OfType运算符

OfType运算符过滤序列或数据源取决于它们将集合中的元素强制转换为指定类型的能力。它是通过使用延迟执行来实现的,这意味着它立即返回一个对象,该对象包含执行该操作所需的信息,但是当该对象通过使用foreach循环或for循环遍历该循环时执行。

  • 在LINQ中,允许在单个查询中使用多个OfType。
  • 它不支持C#或VB.Net语言的查询语法,但可以将其与语法结合使用,如下面的示例所示。

    例子:

    // C# program to illustrate the 
    // concept of OfType operator
    using System;
    using System.Linq;
    using System.Collections;
      
    // Employee details
    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 {
      
        // Main method
        static public void Main()
        {
      
            // Data Source
            ArrayList myarray = new ArrayList();
            myarray.Add("GeeksforGeeks");
            myarray.Add(23);
            myarray.Add(new Employee() {emp_id = 209, emp_name = "Anjita"});
            myarray.Add(new Employee() {emp_id = 210, emp_name = "Soniya"});
            myarray.Add(new Employee() {emp_id = 300, emp_name = "Rohan"});
      
            // Using OfType operator
            var res1 = from e1 in myarray.OfType()
                           select e1;
      
            foreach(var val1 in res1)
            {
                Console.WriteLine(val1);
            }
      
            var res2 = from e2 in myarray.OfType()
                           select e2;
      
            foreach(var val2 in res2)
            {
                Console.WriteLine(val2.emp_name);
            }
        }
    }
    
    输出:
    GeeksforGeeks
    Anjita
    Soniya
    Rohan
    
  • 它支持C#或VB中的方法语法。它在Queryable和Enumerable类中均可用。如下例所示。

    例子:

    // C# program to illustrate the 
    // concept of OfType operator
    using System;
    using System.Linq;
    using System.Collections;
      
    // Employee details
    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;
        }
    }
      
    class GFG {
      
        // Main method
        static public void Main()
        {
      
            // Data Source
            ArrayList myarray = new ArrayList();
            myarray.Add(new Employee() {emp_id = 209, emp_name = "Anjita"});
            myarray.Add(new Employee() {emp_id = 210, emp_name = "Soniya"});
            myarray.Add(new Employee() {emp_id = 300, emp_name = "Rohan"});
      
            // Get the id of the employees
            // Using OfType operator
            var res = myarray.OfType();
      
            foreach(var val in res)
            {
                Console.WriteLine("Employee Id: {0}", val.emp_id);
            }
        }
    }
    
    输出:
    Employee Id: 209
    Employee Id: 210
    Employee Id: 300