C#中let字句

应用场景:
在查询表达式中,存储子表达式的结果有时很有用,这样可以在随后的子句中使用。 可以使用 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字句中的变量来使用。

原文地址:https://www.cnblogs.com/ButterflyEffect/p/6369366.html