我正在刷新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;
Run Code Online (Sandbox Code Playgroud)
它需要选择的结果,并将其放置到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;
Run Code Online (Sandbox Code Playgroud)
这两个noVowel和n变量都可以使用(即使我在这种情况下没有使用它).
虽然我可以看到差异,但我不太明白为什么人们会想要在into关键字上使用let关键字,除非明确要确保以前的变量不能在查询的后半部分使用.
那么,两个关键词存在的原因是否存在?