Iqueryable là gì

     

Các toán tử biến hóa trong LINQ rất có ích trong việc chuyển đổi kiểu dữ liệu của phần tử trong một danh sách.

Bạn đang xem: Iqueryable là gì

Có cha loại toán tử gửi đổi:

Toán tử As (AsEnumerable và AsQueryable).Toán tử To (ToArray, ToDipedia, ToList cùng ToLookup).Toán tử Casting (Cast với OfType).

Bảng sau liệt kê tất cả các toán tử đưa đổi.


Phương thứcMô tả
AsEnumerableTrả về tập hợp nguồn vào dưới dạng IEnumerable
AsQueryableChuyển thay đổi từ IEnumerable sang IQueryable, để mô phỏng nhà cung cấp truy vấn tự xa
CastChuyển đổi tập phù hợp non-generic sang trọng tập phù hợp generic (IEnumerable to IEnumerable)
OfTypeLọc một tập hợp dựa vào một kiểu dữ liệu được chỉ định
ToArrayChuyển thay đổi một tập hợp thành một mảng
ToDictionary Đưa các phần tử vào Dictionary dựa trên tác dụng chọn khóa.
ToListChuyển đổi tập đúng theo thành Danh sách
ToLookupNhóm các thành phần vào Lookup

Toán tử biến đổi là một trong những toán tử tầm nã vấn chuẩn chỉnh của LINQ.


Toán tử tróc nã vấn chuẩn chỉnh của LINQ | 90namdangbothanhhoa.vn
Các toán tử tầm nã vấn chuẩn chỉnh trong LINQ là các phương thức không ngừng mở rộng cho các kiểu IEnumerable cùng IQueryable.
*
Trung Nguyen90namdangbothanhhoa.vn
*

Phương thức AsEnumerable vào LINQ

Phương thức AsEnumerable ép hình trạng một đối tượng nguồn thành giao diện IEnumerable.

class Program static void ReportTypeProperties(T obj) Console.WriteLine("Compile-time type: 0", typeof(T).Name); Console.WriteLine("Actual type: 0", obj.GetType().Name); static void Main(string<> args) Student<> studentArray = new Student() StudentID = 1, StudentName = "John", Age = 18 , new Student() StudentID = 2, StudentName = "Steve", Age = 21 , new Student() StudentID = 3, StudentName = "Bill", Age = 25 , new Student() StudentID = 4, StudentName = "Ram", Age = trăng tròn , new Student() StudentID = 5, StudentName = "Ron", Age = 31 ; ReportTypeProperties(studentArray); ReportTypeProperties(studentArray.AsEnumerable()); Đây là công dụng khi biên dịch và triển khai chương trình:

Compile-time type: Student<>Actual type: Student<>Compile-time type: IEnumerable`1Actual type: Student<>Lưu ý: cách thức AsEnumerable không hỗ trợ cú pháp tầm nã vấn LINQ.

Phương thức AsQueryable vào LINQ

Phương thức AsQueryable thay đổi một đối tượng người sử dụng nguồn thành kiểu dáng IQueryable.

class Program static void ReportTypeProperties(T obj) Console.WriteLine("Compile-time type: 0", typeof(T).Name); Console.WriteLine("Actual type: 0", obj.GetType().Name); static void Main(string<> args) Student<> studentArray = new Student() StudentID = 1, StudentName = "John", Age = 18 , new Student() StudentID = 2, StudentName = "Steve", Age = 21 , new Student() StudentID = 3, StudentName = "Bill", Age = 25 , new Student() StudentID = 4, StudentName = "Ram", Age = đôi mươi , new Student() StudentID = 5, StudentName = "Ron", Age = 31 ; ReportTypeProperties(studentArray); ReportTypeProperties(studentArray.AsQueryable()); Đây là công dụng khi biên dịch và thực hiện chương trình:

Compile-time type: Student<>Actual type: Student<>Compile-time type: IQueryable`1Actual type: EnumerableQuery`1Lưu ý: cách làm AsQueryable không hỗ trợ cú pháp truy hỏi vấn LINQ.

Phương thức Cast vào LINQ

Phương thức Cast tiến hành điều tương tự như thủ tục AsEnumerable. Nó ép kiểu một đối tượng nguồn thành hình dáng IEnumerabl.

Xem thêm: Chuyên Gia Trang Điểm Nam Trung Tiểu Sự Nghiệp Chuyên Gia Trang Điểm

class Program static void ReportTypeProperties(T obj) Console.WriteLine("Compile-time type: 0", typeof(T).Name); Console.WriteLine("Actual type: 0", obj.GetType().Name); static void Main(string<> args) Student<> studentArray = new Student() StudentID = 1, StudentName = "John", Age = 18 , new Student() StudentID = 2, StudentName = "Steve", Age = 21 , new Student() StudentID = 3, StudentName = "Bill", Age = 25 , new Student() StudentID = 4, StudentName = "Ram", Age = 20 , new Student() StudentID = 5, StudentName = "Ron", Age = 31 ; ReportTypeProperties(studentArray); ReportTypeProperties(studentArray.Cast()); Đây là kết quả khi biên dịch và thực thi chương trình:

Compile-time type: Student<>Actual type: Student<>Compile-time type: IEnumerable`1Actual type: Student<>studentArray.Cast() y như (IEnumerable)studentArray. Nhưng lại Cast() ngắn gọn với dễ gọi hơn.

Lưu ý: phương thức Cast không hỗ trợ cú pháp truy hỏi vấn LINQ.

Phương thức ToArray trong LINQ

Phương thức ToArray biến đổi một đối tượng người dùng nguồn thành đẳng cấp mảng. ToArray là một toán tử To.

Toán tử To bắt buộc triển khai các tróc nã vấn. Nó buộc trình hỗ trợ truy vấn từ bỏ xa (remote query provider) triển khai truy vấn và nhận tác dụng từ nguồn tài liệu - ví dụ: cơ sở dữ liệu SQL Server.

Ví dụ minh họa phương thức ToArray cùng với tập hợp tất cả kiểu dữ liệu nguyên thủy:

IList strList = new List() "Two", "One", "Three", "Four", "Three" ;Console.WriteLine("strList type: 0", strList.GetType().Name);string<> strArray = strList.ToArray();// converts list to ArrayConsole.WriteLine("strArray type: 0", strArray.GetType().Name);Đây là kết quả khi biên dịch và xúc tiến chương trình:

strList type: List`1strArray type: String<>Lưu ý: phương thức ToArray không hỗ trợ cú pháp truy vấn vấn LINQ.

Phương thức ToList vào LINQ

Phương thức ToList chuyển đổi một đối tượng người tiêu dùng nguồn thành hình dạng List. ToList là 1 trong toán tử To.

Toán tử To bắt buộc tiến hành các truy nã vấn. Nó buộc trình cung ứng truy vấn từ xa (remote query provider) triển khai truy vấn cùng nhận công dụng từ nguồn dữ liệu - ví dụ: cơ sở dữ liệu SQL Server.

Ví dụ minh họa cách làm ToList cùng với tập hợp có kiểu dữ liệu nguyên thủy:

IList strList = new List() "Two", "One", "Three", "Four", "Three" ;Console.WriteLine("strList type: 0", strList.GetType().Name);IList newList = strArray.ToList(); // converts array into listConsole.WriteLine("newList type: 0", newList.GetType().Name);Đây là kết quả khi biên dịch và thực hiện chương trình:

strList type: List`1newList type: List`1Lưu ý: cách tiến hành ToList không hỗ trợ cú pháp truy vấn LINQ.

Phương thức ToDictionary trong LINQ

Phương thức ToDictionary biến hóa một đối tượng người tiêu dùng nguồn thành thứ hạng Dictionary. ToDictionary là một trong những toán tử To.

Toán tử To bắt buộc tiến hành các truy vấn vấn. Nó buộc trình cung ứng truy vấn từ xa (remote query provider) triển khai truy vấn với nhận công dụng từ nguồn dữ liệu - ví dụ: cơ sở dữ liệu SQL Server.

Xem thêm: Tiểu Sử Danh Hài Hoài Linh, Gia Đình Hoài Linh Gồm Những Ai

Ví dụ minh họa phương thức ToDictionary với tập hợp có kiểu dữ liệu nguyên thủy:

IList studentList = new List() new Student() StudentID = 1, StudentName = "John", Age = 18 , new Student() StudentID = 2, StudentName = "Steve", Age = 21 , new Student() StudentID = 3, StudentName = "Bill", Age = 18 , new Student() StudentID = 4, StudentName = "Ram", Age = 21 , new Student() StudentID = 5, StudentName = "Ron", Age = 21 ;//following converts danh sách into dictionary where StudentId is a keyvar studentDict = studentList.ToDictionary(s => s.StudentID); foreach(var thắng lợi in studentDict) Console.WriteLine("Key: 0, Value: 1", item.Key, item.Value.StudentName);Đây là công dụng khi biên dịch và thực hiện chương trình:

Key: 1, Value: JohnKey: 2, Value: SteveKey: 3, Value: BillKey: 4, Value: RamKey: 5, Value: RonHình bên dưới đây cho thấy studentDict trong lấy một ví dụ trên cất cặp khóa-giá trị, trong các số đó khóa là StudentID và giá trị là đối tượng người dùng Student.