由于我的标题是自我解释,我知道如何纠正它,但为什么它首先是这样?
脚本
我写了一个VB.Net代码
Dim list As List(Of String) = New List(Of String)
//Code to populate list
Dim wherelinq As IEnumerable(Of String) = From s In list Where s.StartsWith("A")
Run Code Online (Sandbox Code Playgroud)
这工作正常,没有错误
但是C#中的相同逻辑失败了
List<string> list = new List<string>();
//Code to populate list
IEnumerable<string> wherelinq = from s in list where s.StartsWith("A");
Run Code Online (Sandbox Code Playgroud)
这给出了错误

为什么在C#中有这种限制?我遗失的具体东西是什么?
VB.NET和C#是不同的语言,因此LINQ查询语法自然也是不同的:C#需要select s,而VB.NET则不需要.
Microsoft的文档要求C#中的查询语法查询必须以select或结尾group:
查询表达式必须以from子句开头,并且必须以select或group子句结束.在第一个from子句和最后一个select或group子句之间,它可以包含一个或多个这些可选子句:where,orderby,join,let甚至是from子句.您还可以使用into关键字将join或group子句的结果用作同一查询表达式中其他查询子句的源.
有关语法的详细信息,请参阅C#语言规范,第7.16节.
var wherelinq = from s in list where s.StartsWith("A") select s;
Run Code Online (Sandbox Code Playgroud)
select如果使用函数语法,则不必添加:
var wherelinq = list.Where(s => s.StartsWith("A"));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2821 次 |
| 最近记录: |