JJS*_*JJS 2 .net linq vb.net operators linq-to-dataset
该示例查询应用程序使用了!运算符引用DataRow中的字段.
Option Strict Off
Imports System.Data
Imports System.Linq
Module Program
Public Sub Main()
Dim numbers() As Integer = {5, 4, 1, 3, 9, 8, 6, 7, 2, 0}
Dim table As New DataTable("Numbers")
table.Columns.Add("number", GetType(Integer))
For Each n In numbers
table.Rows.Add(New Object() {n})
Next
Dim lowNums = From row In table.Rows _
Where row!number < 5
Select row
For Each x In lowNums
Console.WriteLine(x!number)
Next
End Sub
End Module
Run Code Online (Sandbox Code Playgroud)
是什么 !操作员叫?规则记录在哪里?
这是(在此上下文中)感叹号运算符:
"仅在类或接口上使用!运算符作为字典访问运算符.类或接口必须具有接受单个String参数的默认属性.紧跟在!运算符之后的标识符将成为传递给默认属性的参数值一根绳子."
所以代码row!number相当于row("number")
这个运算符是VB6遗留的遗留物,在VB.NET IMO中应该避免使用.它与LINQ没有特别关系.
你的例子有点人为,因为它没有编译(即使Option Strict Off) - 编辑:现在已经修改但仍然无法使用Option Strict Off进行编译
注意"!字符也用作单一字符." 例如,Dim s! = 0.12但这不是您的上下文中的代码的意图