调用此代码片段LINQ(语言集成查询)是否正确?
var lstMyStrings = new List<string>();
lstMyStrings.Where(aX => string.IsNullOrEmpty(aX))
.Skip(3)
.ToList();
Run Code Online (Sandbox Code Playgroud)
我很困惑因为这段代码System.Linq是强制性的.
但是,当我看到问题和答案是这样的:.NET LINQ查询语法与方法链
,然后他们明确谈论方法链而不是LINQ.
Zoh*_*led 15
LINQ可以用两种不同的方式编写.
一种是使用LINQ声明性查询语法编写查询:
var query = from x in source
where condition
select x.Property
Run Code Online (Sandbox Code Playgroud)
另一种是使用LINQ的扩展方法:
var query = source.Where(condition).Select(x => x.Property);
Run Code Online (Sandbox Code Playgroud)
两个查询都是相同的,并且会产生相同的结果(好吧,这个过度简化的例子中的编译器错误,但它的重要思想:-))
c#编译器将查询转换为方法调用.
这意味着您作为查询编写的所有内容也可以使用方法链编写.但请注意,相反的是错误的 - 有些查询只能使用Linq的扩展方法编写.
为了进一步阅读,这是微软必须要说的.
注意第二段以此开头:
查询语法和方法语法在语义上是相同的,但许多人发现查询语法更简单,更易于阅读.
顺便说一句,如果它还没有被清楚,那么System.Linq方法链接语法必不可少的原因也是因为linq扩展方法属于这个命名空间.