Tôi hiện đang đánh lừa LINQ và đang cố gắng hiểu sự khác biệt giữa let
và sử dụng từ khóa into
. Cho đến nay, từ khóa let
có vẻ tốt hơn từ khóa into
theo như hiểu biết của tôi.Từ khóa của linq có tốt hơn từ khóa của nó không?
Từ khóa into
về cơ bản cho phép một người tiếp tục truy vấn sau khi chiếu. (Chỉ muốn nói rõ rằng tôi không đề cập đến một cho nhóm tham gia.)
Với một loạt các tên nó cho phép một người làm như 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 chọn và đặt nó vào biến số noVowel
, sau đó cho phép một người giới thiệu thêm các điều khoản where
, orderby
và select
. Khi biến số noVowel
được tạo, biến số n
không còn khả dụng nữa. Mặt khác, let
từ khóa sử dụng các loại ẩ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ả noVowel
và n
biến có sẵn để sử dụng (mặc dù tôi đã không sử dụng nó trong trường hợp này).
Trong khi tôi có thể thấy sự khác biệt, tôi không thể hiểu tại sao người ta muốn sử dụng từ khóa into
trên từ khóa let
trừ khi một cách rõ ràng muốn đảm bảo rằng các biến trước đó không thể được sử dụng trong các phần sau của truy vấn.
Vì vậy, có lý do chính đáng nào khiến cả hai từ khóa đều tồn tại?
Đây có phải là lỗi đánh máy trong ví dụ 'let' -' where noVowel', 'noVowel' trong trường hợp đó là gì? – sll