VD1: Đây là ví dụ về cấu trúc Where-Index: Trả về chữ số có chiều dài lớn hơn giá trị của số đó.
Short digits:
The word five is shorter than its value.
The word six is shorter than its value.
The word seven is shorter than its value.
The word eight is shorter than its value.
The word nine is shorter than its value.
VD 2:
Một đặc điểm khác nữa của C# 3.0 là sử dụng biểu thức Lambda (Lambda expressions). (Đơn giản việc sử dụng delegates và phương thức anonymous (phương thức ẩn danh)).
"=>": được hiểu đơn giản trong C# là "goes to".
Trong ví dụ 1, biến digit là 1 đối tượng của tập hợp digits, index là chỉ số phần tử digit trong digits (mình tạm hiểu như thế).
digit.length<index là biểu thức so sánh của câu điều kiện Where.
Xét ví dụ 2:
Vậy tại sao không ghi thẳng là people.Where(p.ID==1)?
Thứ 1: p là biến gì? Trình biên dịch không hiểu.
Thứ 2: Do Where là Extension Method (phương thức mở rộng) từ People nên buộc kiểu của p phải là people.
Để đơn giản, ta dùng biểu thức delegate để minh họa. (Delegate được hiểu đơn giản là con trỏ trỏ đến hàm trong C/C++)
public void Linq5() { string[] digits = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" }; var shortDigits = digits.Where((digit, index) => digit.Length < index); Console.WriteLine("Short digits:"); foreach (var d in shortDigits) { Console.WriteLine("The word {0} is shorter than its value.", d); } }Result
Short digits:
The word five is shorter than its value.
The word six is shorter than its value.
The word seven is shorter than its value.
The word eight is shorter than its value.
The word nine is shorter than its value.
VD 2:
var query = people .Where(p => p.ID == 1) .Select(p => new { p.FirstName, p.LastName } );Từ khóa "from bị loại bỏ. Mệnh đề "where" và "select" được chuyển thành 2 phương thức: Where<T>() và Select<T>(). Đây là 1 đặc điểm mới của C# 3.0 gọi là Extension Methods (Phương thức mở rộng).
Một đặc điểm khác nữa của C# 3.0 là sử dụng biểu thức Lambda (Lambda expressions). (Đơn giản việc sử dụng delegates và phương thức anonymous (phương thức ẩn danh)).
"=>": được hiểu đơn giản trong C# là "goes to".
Trong ví dụ 1, biến digit là 1 đối tượng của tập hợp digits, index là chỉ số phần tử digit trong digits (mình tạm hiểu như thế).
digit.length<index là biểu thức so sánh của câu điều kiện Where.
Xét ví dụ 2:
Vậy tại sao không ghi thẳng là people.Where(p.ID==1)?
Thứ 1: p là biến gì? Trình biên dịch không hiểu.
Thứ 2: Do Where là Extension Method (phương thức mở rộng) từ People nên buộc kiểu của p phải là people.
Để đơn giản, ta dùng biểu thức delegate để minh họa. (Delegate được hiểu đơn giản là con trỏ trỏ đến hàm trong C/C++)
Funcfilter = delegate(Person p) { return p.ID == 1; }; var query = people .Where(filter) .Select(p => new { p.FirstName, p.LastName } ); ObjectDumper.Write(query);
Nhận xét
Đăng nhận xét