使用 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
animalName.Length
什么是等效的 LINQ 扩展方法调用集来实现“let”关键字在此处的作用?
Let没有自己的操作;它背负着Select. 如果您使用“反射器”来分离现有的 dll,您可以看到这一点。
Select
它会是 这样 的:
var result = names .Select(animalName => new { nameLength = animalName.Length, animalName}) .Where(x=>x.nameLength > 3) .OrderBy(x=>x.nameLength) .Select(x=>x.animalName);