Ngôn ngữ LINQ - Toán tử Max
Toán tử Max trong LINQ
Toán tử Max trả về phần tử kiểu số lớn nhất từ danh sách.
Ví dụ sau đây minh họa cách sử dụng phương thức Max trên danh sách kiểu nguyên thủy.
IList<int> intList = new List<int>() { 10, 21, 30, 45, 50, 87 };
var largest = intList.Max();
Console.WriteLine("Largest Element: {0}", largest);
var largestEvenElements = intList.Max(i => i % 2 == 0 ? i : 0);
Console.WriteLine("Largest Even Element: {0}", largestEvenElements );
Đây là kết quả khi biên dịch và thực thi chương trình:
Largest Element: 87
Largest Even Element: 50
Ví dụ sau đây minh họa sử dụng phương thức Max trên danh sách kiểu phức tạp.
IList<Student> studentList = new List<Student>()
{
new Student() { StudentID = 1, StudentName = "John", Age = 13 },
new Student() { StudentID = 2, StudentName = "Moin", Age = 21 },
new Student() { StudentID = 3, StudentName = "Bill", Age = 18 },
new Student() { StudentID = 4, StudentName = "Ram", Age = 20 },
new Student() { StudentID = 5, StudentName = "Ron", Age = 15 }
};
var oldest = studentList.Max(s => s.Age);
Console.WriteLine("Oldest Student Age: {0}", oldest);
Đây là kết quả khi biên dịch và thực thi chương trình:
Oldest Student Age: 21
Phương thức Max trả về kết quả của bất kỳ kiểu dữ liệu nào. Ví dụ sau đây cho thấy cách bạn có thể tìm thấy một sinh viên có tên dài nhất trong danh sách:
public class Student : IComparable<Student>
{
public int StudentID { get; set; }
public string StudentName { get; set; }
public int Age { get; set; }
public int StandardID { get; set; }
public int CompareTo(Student other)
{
if (this.StudentName.Length > other.StudentName.Length)
{
return 1;
}
return 0;
}
}
class Program
{
static void Main(string[] args)
{
// Student collection
IList<Student> studentList = new List<Student>()
{
new Student() { StudentID = 1, StudentName = "Johnny", Age = 13 },
new Student() { StudentID = 2, StudentName = "Moin", Age = 21 },
new Student() { StudentID = 3, StudentName = "Bill", Age = 18 },
new Student() { StudentID = 4, StudentName = "Ram", Age = 20 },
new Student() { StudentID = 5, StudentName = "Ron", Age = 15 }
};
var studentWithLongName = studentList.Max();
Console.WriteLine("Student ID: {0}, Student Name: {1}",
studentWithLongName.StudentID, studentWithLongName.StudentName);
}
}
Đây là kết quả khi biên dịch và thực thi chương trình:
Student ID: 1, Student Name: Johnny
Theo ví dụ trên, để tìm sinh viên có tên dài nhất, bạn cần triển khai interface IComparable<T> cho lớp Student và so sánh độ dài của tên sinh viên trong phương thức CompareTo.
Vì vậy, bây giờ khi bạn sử dụng phương thức Max, nó sẽ gọi phương thức CompareTo để trả về kết quả phù hợp.