[c#] 在链式LINQ扩展方法调用中相当于'let'关键字的代码



Answers

这里有一篇很好的文章

基本上let创建一个匿名元组。 这相当于:

var result = names.Select(
  animal => new { animal = animal, nameLength = animal.Length })
.Where(x => x.nameLength > 3)
.OrderBy(y => y.nameLength)
.Select(z => z.animal);
Question

使用C#编译器查询理解功能,您可以编写如下代码:

var names = new string[] { "Dog", "Cat", "Giraffe", "Monkey", "Tortoise" };
var result =
    from animalName in names
    let nameLength = animalName.Length
    where nameLength > 3
    orderby nameLength
    select animalName; 

在上面的查询表达式中, let关键字允许将值传递给where和orderby操作,而不重复调用animalName.Length

什么是实现“let”关键字在这里实现什么的LINQ扩展方法调用的等效集合?




Links