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