ตอนนี้ฉันกำลังใช้ LINQ และกำลังพยายามทำความเข้าใจความแตกต่างระหว่างคำหลักletและการใช้intoคำหลัก จนถึงตอนนี้letคีย์เวิร์ดดูเหมือนดีกว่าintoคีย์เวิร์ดเท่าที่ฉันเข้าใจ
โดยintoหลักแล้วคำหลักช่วยให้สามารถดำเนินการสืบค้นต่อไปได้หลังจากการฉายภาพ (เพียงต้องการระบุอย่างชัดเจนว่าฉันไม่ได้หมายถึงหนึ่งในการเข้าร่วมกลุ่ม)
ด้วยอาร์เรย์ของชื่อที่อนุญาตให้ทำสิ่งต่อไปนี้:
var intoQuery =
from n in names
select Regex.Replace(n, "[aeiou]", "")
into noVowel
where noVowel.Length > 2
select noVowel;
มันต้องใช้ผลมาจากการเลือกและวางมันลงไปในnoVowelตัวแปรแล้วซึ่งช่วยให้หนึ่งที่จะแนะนำเพิ่มเติมwhere, orderbyและselectข้อ เมื่อnoVowelสร้างnตัวแปรแล้วตัวแปรจะไม่สามารถใช้ได้อีกต่อไป
ในทางกลับกันletคำหลักจะใช้ประเภทที่ไม่ระบุตัวตนชั่วคราวเพื่อให้คุณสามารถใช้ตัวแปรได้มากกว่าหนึ่งตัวแปรในแต่ละครั้ง
คุณสามารถทำสิ่งต่อไปนี้:
var letQuery =
from n in names
let noVowel = Regex.Replace(n, "[aeiou]", "")
where noVowel.Length > 2
select noVowel;
มีทั้งตัวแปรnoVowelและnตัวแปร (แม้ว่าฉันจะไม่ได้ใช้ในกรณีนี้)
แม้ว่าฉันจะเห็นความแตกต่าง แต่ฉันก็ไม่เข้าใจว่าทำไมใคร ๆ จึงต้องการใช้intoคีย์เวิร์ดกับletคีย์เวิร์ดเว้นแต่ว่าจะมีใครต้องการอย่างชัดเจนเพื่อให้แน่ใจว่าตัวแปรก่อนหน้านี้ไม่สามารถใช้ในส่วนหลังของคิวรีได้
มีเหตุผลที่ดีหรือไม่ที่ทำให้คำหลักทั้งสองมีอยู่

letเช่น -where noVowelสิ่งที่เป็นnoVowelในกรณีที่?