将这段代码片段称为LINQ(语言集成查询)是否正确?
var lstMyStrings = new List<string>();
lstMyStrings.Where(aX => string.IsNullOrEmpty(aX))
.Skip(3)
.ToList();
我很困惑,因为此代码的 System.Linq
是必需的。
然而,当我看到这样的问题和答案时:.NET LINQ query syntax vs method chain
,然后他们明确地谈论方法链而不是 LINQ。
最佳答案
LINQ 可以用两种不同的方式编写。
一种是使用 LINQ 声明式查询语法编写查询:
var query = from x in source
where condition
select x.Property
另一种是使用 LINQ 的扩展方法:
var query = source.Where(condition).Select(x => x.Property);
这两个查询是相同的,并且会产生相同的结果(好吧,在这个过于简化的示例中出现编译器错误,但重要的是思想:-))
C# 编译器将查询转换为方法调用。
这意味着您作为查询编写的所有内容也可以使用方法链编写。但请注意,反之亦然 - 某些查询只能使用 Linq 的扩展方法编写。
如需进一步阅读,here's what Microsoft have to say about it.
注意第二段是这样开头的:
Query syntax and method syntax are semantically identical, but many people find query syntax simpler and easier to read.
顺便说一句,如果还不清楚的话,System.Linq
对于方法链接语法是强制性的也是因为 linq 扩展方法属于这个命名空间。
关于c# - 一个方法链能叫LINQ吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46070567/