Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Từ khóa into trong LINQ C#

Từ khóa into trong query syntax cho phép tiếp tục truy vấn trên kết quả của nhóm (group), join, hoặc select - tạo biến phạm vi mới.

Ví dụ minh họa

Danh sách nhân viên:

IList<Employee> employee = new List<Employee>() {
    new Employee() { EmpID = 1, EmpName = "Tom", EmpMarks = 90, Rank = 8 },
    new Employee() { EmpID = 2, EmpName = "Anne", EmpMarks = 60, Rank = 21 },
    new Employee() { EmpID = 3, EmpName = "Jack", EmpMarks = 76, Rank = 18 },
    new Employee() { EmpID = 4, EmpName = "Amy", EmpMarks = 67, Rank = 20 }
};

Lọc Rank 5-20, sau đó lọc tiếp tên kết thúc bằng 'k':

var res = from e in employee
          where e.Rank > 5
          where e.Rank < 20
          select e into name
          where name.EmpName.EndsWith("k")
          select name;

Mã nguồn hoàn chỉnh

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

public class Demo
{
    public static void Main()
    {
        IList<Employee> employee = new List<Employee>() {
            new Employee() { EmpID = 1, EmpName = "Tom", EmpMarks = 90, Rank = 8 },
            new Employee() { EmpID = 2, EmpName = "Anne", EmpMarks = 60, Rank = 21 },
            new Employee() { EmpID = 3, EmpName = "Jack", EmpMarks = 76, Rank = 18 },
            new Employee() { EmpID = 4, EmpName = "Amy", EmpMarks = 67, Rank = 20 }
        };

        var res = from e in employee
                  where e.Rank > 5
                  where e.Rank < 20
                  select e into name
                  where name.EmpName.EndsWith("k")
                  select name;

        foreach (var emp in res)
        {
            Console.WriteLine("Name: " + emp.EmpName);
            Console.WriteLine("Marks: " + emp.EmpMarks);
        }
    }
}

public class Employee
{
    public int EmpID { get; set; }
    public string EmpName { get; set; }
    public int EmpMarks { get; set; }
    public int Rank { get; set; }
}

Kết quả đầu ra

Name: Jack
Marks: 76

Giải thích: into name tạo biến phạm vi mới 'name' chỉ chứa kết quả trung gian (Tom, Jack). Sau đó lọc tiếp trên 'name'.