一、应用场景
在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用。 可以使用 let 关键字完成这一工作,该关键字可以创建一个新的范围变量,并且用您提供的表达式的结果初始化该变量。 一旦用值初始化了该范围变量,它就不能用于存储其他值。 但如果该范围变量存储的是可查询的类型,则可以对其进行查询。
二、示例代码
using System; using System.Linq; namespace UseLet { class Program { static void Main() { string[] strings = { "A penny saved is a penny earned.", "The early bird catches the worm.", "The pen is mightier than the sword." }; var earlyBirdQuery = from sentence in strings let words = sentence.Split(' ') from word in words let w = word.ToLower() where w[0] == 'a' || w[0] == 'e' || w[0] == 'i' || w[0] == 'o' || w[0] == 'u' select word; foreach (var v in earlyBirdQuery) { Console.WriteLine("\"{0}\" starts with a vowel", v); } Console.WriteLine("Press any key to exit"); Console.ReadLine(); } } }
从上面效果可以看出子句let的作用。如果不使用 let,则必须在 where 子句的每个谓词中调用 ToLower,并且let可以保存from字句中的变量来使用。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
问题内容: 我要从字典中解开两个值,在使用它们之前,我必须将它们强制转换并测试正确的类型。这是我想出的: 但是我想将两个查询打包在一起。这样就可以了: 该语法不起作用,所以我想知道是否有一种漂亮的方法可以做到这一点。 问题答案: Swift 3更新: 以下内容将在Swift 3中运行: 请务必记住,如果尝试的可选绑定之一失败,则不会执行该块内的代码。 注意:这些子句不必全部都是’let’子句,您可
本文向大家介绍ActiveMQ在C#中的应用示例分析,包括了ActiveMQ在C#中的应用示例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ActiveMQ在C#中的应用。分享给大家供大家参考,具体如下: ActiveMQ是个好东东,不必多说。ActiveMQ提供多种语言支持,如Java, C, C++, C#, Ruby, Perl, Python, PHP等。由于我在window
为什么defn中的值不能以与LET子句相同的方式从函数体中访问?
问题内容: ECMAScript 6应该提供块范围,而不会引起麻烦。有人可以解释为什么在函数下面的代码中解析为循环中的最后一个值(与一样),而不是当前迭代中的值吗? 根据MDN在这样的循环中使用应将变量绑定在循环主体的范围内。当我在块中使用临时变量时,事情按我期望的那样工作。为什么有必要? 我使用Traceur和来测试了脚本。 问题答案: quin着眼睛的答案不再是最新的。在ECMA 6规范中,指
本文向大家介绍C#异常处理中try和catch语句及finally语句的用法示例,包括了C#异常处理中try和catch语句及finally语句的用法示例的使用技巧和注意事项,需要的朋友参考一下 使用 try/catch 处理异常 try-catch 块的用途是捕捉和处理工作代码所生成的异常。 有些异常可以在 catch 块中处理,解决问题后不会再次引发异常;但更多情况下,您唯一能做的是确保引发适
问题内容: node.js是否支持let语句,类似于MDN上描述的内容?? 如果没有,是否可以通过自执行匿名功能或其他方式复制功能? 和/或还有另一个js环境 有和 像节点一样具有REPL?犀牛? 编辑 : 这个问题是很久以前问过的。截至2015年末,答案是“是的,是的”。io.js 3.3中默认包含Harmony功能,并且最近已在4.x版本中将其恢复到node.js。 问题答案: 我不认为Nod