使用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”关键字呢?

最佳答案

让我们没有自己的操作;它背负Select。如果使用“reflector”将现有的dll分开,则可以看到此信息。

它会是这样的:

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

关于c# - 等效于链接的LINQ扩展方法调用中的 'let'关键字的代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1092687/

10-09 01:17