Tôi hiện đang tìm hiểu về LINQ và đang cố gắng hiểu sự khác biệt giữa letcách sử dụng và intotừ khóa. Cho đến nay lettừ khóa có vẻ tốt hơn intotừ khóa theo như sự hiểu biết của tôi.
Các intotừ khóa cơ bản cho phép một để tiếp tục truy vấn sau một chiếu. (Chỉ muốn nói rõ ràng rằng tôi không đề cập đến người tham gia nhóm.)
Với một mảng tên, nó cho phép người ta thực hiện những việc sau:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
Phải mất kết quả của lựa chọn và đặt nó vào trong noVowelbiến mà sau đó cho phép một để giới thiệu thêm where, orderbyvà selectmệnh đề. Khi noVowelbiến được tạo, nbiến không còn khả dụng nữa.
Mặt khác let, từ khóa sử dụng các kiểu ẩn danh tạm thời để cho phép bạn sử dụng lại nhiều biến cùng một lúc.
Bạn có thể làm như sau:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
Cả biến noVowelvà nđều có sẵn để sử dụng (mặc dù tôi chưa sử dụng nó trong trường hợp này).
Mặc dù tôi có thể thấy sự khác biệt, nhưng tôi không thể hiểu được lý do tại sao người ta muốn sử dụng intotừ khóa thay cho lettừ khóa trừ khi người ta muốn chắc chắn rằng các biến trước đó không thể được sử dụng trong phần sau của truy vấn.
Vì vậy, có lý do chính đáng tại sao cả hai từ khóa tồn tại?

letví dụ -where noVowel,noVoweltrong trường hợp đó là gì?