最佳答案
我目前正在温习 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
关键字,除非明确地想要确保前面的变量不能在查询的后面部分使用。
那么,为什么两个关键字都存在呢?