Ngôn ngữ LINQ - Toán tử SelectMany
Toán tử SelectMany trong LINQ
Toán tử SelectMany trong LINQ là gì?
SelectMany trong LINQ được sử dụng để chuyển đổi dữ liệu của từng phần tử trong danh sách (có dạng danh sách) thành một danh sách kết quả trả về.
Bây giờ, chúng ta sẽ tìm hiểu toán tử truy vấn SelectMany bằng cách sử dụng lớp Student sau.
public class Student
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public int Age { get; set; }
public List<string> Programming { get; set; }
}
Mệnh đề SelectMany trong Cú pháp truy vấn
Ví dụ sau đây cho thấy toán tử select trả về một danh sách kiểu chuỗi chứa thông tin thuộc tính Programming (thuộc tính này kiểu danh sách chuổi).
IList<Student> studentList = new List<Student>()
{
new Student(){StudentID = 1, StudentName = "James", Programming = new List<string>() { "C#", ".NET Core" }},
new Student(){StudentID = 2, StudentName = "Sam", Programming = new List<string>() { "WCF", "SQL Server" }},
new Student(){StudentID = 3, StudentName = "Patrik", Programming = new List<string>() { "MVC" }},
new Student(){StudentID = 4, StudentName = "Sara", Programming = new List<string>() { "ADO.NET", "LINQ" }}
};
var selectResult = from s in studentList
select s.Programming;
// iterate selectResult
foreach (var item in selectResult)
foreach (var item1 in item)
Console.WriteLine(item1);
Đây là kết quả khi biên dịch và thực thi chương trình:
C#
.NET Core
WCF
SQL Server
MVC
ADO.NET
LINQ
Phương thức SelectMany trong Cú pháp phương thức
Phương thức mở rộng SelectMany là tùy chọn trong cú pháp phương thức. Tuy nhiên, bạn có thể sử dụng nó để định dạng dữ liệu.
Trong ví dụ sau,phương thức mở rộng SelectMany trả về danh sách ngôn ngữ lập trình của tất cả sinh viên trong danh sách. Danh sách ngôn ngữ lập trình được trả về từ thuộc tính Programming (kiểu danh sách chuỗi):
IList<Student> studentList = new List<Student>()
{
new Student(){StudentID = 1, StudentName = "James", Programming = new List<string>() { "C#", ".NET Core" }},
new Student(){StudentID = 2, StudentName = "Sam", Programming = new List<string>() { "WCF", "SQL Server" }},
new Student(){StudentID = 3, StudentName = "Patrik", Programming = new List<string>() { "MVC" }},
new Student(){StudentID = 4, StudentName = "Sara", Programming = new List<string>() { "ADO.NET", "LINQ" }}
};
var selectResult = studentList.SelectMany(s => s.Programming);
// iterate selectResult
foreach (var item in selectResult)
Console.WriteLine(item);
Đây là kết quả khi biên dịch và thực thi chương trình:
C#
.NET Core
WCF
SQL Server
MVC
ADO.NET
LINQ
Truy cập MSDN để biết thêm thông tin về các toán tử projection trong LINQ.