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 let
cách sử dụng và into
từ khóa. Cho đến nay let
từ khóa có vẻ tốt hơn into
từ khóa theo như sự hiểu biết của tôi.
Các into
từ 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 noVowel
biến mà sau đó cho phép một để giới thiệu thêm where
, orderby
và select
mệnh đề. Khi noVowel
biến được tạo, n
biế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 noVowel
và 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 into
từ khóa thay cho let
từ 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?
let
ví dụ -where noVowel
,noVowel
trong trường hợp đó là gì?