小编典典

等效于链式 LINQ 扩展方法调用中的“let”关键字的代码

all

使用 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.

什么是等效的 LINQ 扩展方法调用集来实现“let”关键字在此处的作用?


阅读 79

收藏
2022-06-29

共1个答案

小编典典

Let没有自己的操作;它背负着Select. 如果您使用“反射器”来分离现有的 dll,您可以看到这一点。

它会是 这样 的:

var result = names
        .Select(animalName => new { nameLength = animalName.Length, animalName})
        .Where(x=>x.nameLength > 3)
        .OrderBy(x=>x.nameLength)
        .Select(x=>x.animalName);
2022-06-29