为什么我会得到a";公共成员';字段';关于类型';字符串';找不到。”;在VB.Net中将我的datatable行转换为(对象)列表时发生异常?
我有一个VB.Net应用程序,它试图使用Linq将数据表中的行转换为对象的通用列表 这是我的类(对象)定义:为什么我会得到a";公共成员';字段';关于类型';字符串';找不到。”;在VB.Net中将我的datatable行转换为(对象)列表时发生异常?,vb.net,linq,Vb.net,Linq,我有一个VB.Net应用程序,它试图使用Linq将数据表中的行转换为对象的通用列表 这是我的类(对象)定义: Public Class Sample Public Property Field1 As String = "" Public Property Field2 As String = "" End Class Dim dt as DataTable = ' Results of some query Dim samples As New List(Of Sample)
Public Class Sample
Public Property Field1 As String = ""
Public Property Field2 As String = ""
End Class
Dim dt as DataTable = ' Results of some query
Dim samples As New List(Of Sample)
If dt.Rows.Count > 0 Then
samples = (From dr In dt.AsEnumerable() _
Select New Sample() _
With {.Field1 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(0)), "Missing Field1", dr.Field(Of String)(0)) _
.Field2 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(1)), "Missing FIeld2", dr.Field(Of String)(1))} _
).ToList()
End If
下面是我用来转换为列表(T)的代码片段:
Public Class Sample
Public Property Field1 As String = ""
Public Property Field2 As String = ""
End Class
Dim dt as DataTable = ' Results of some query
Dim samples As New List(Of Sample)
If dt.Rows.Count > 0 Then
samples = (From dr In dt.AsEnumerable() _
Select New Sample() _
With {.Field1 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(0)), "Missing Field1", dr.Field(Of String)(0)) _
.Field2 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(1)), "Missing FIeld2", dr.Field(Of String)(1))} _
).ToList()
End If
代码编译得很好,但出现以下异常:
“找不到类型‘String’上的公共成员‘Field2’。”
如果我只执行1个字段,则该语句工作正常。
如果我颠倒“With”子句中字段的顺序,则会出现以下异常:
找不到类型“String”上的公共成员“Field1”
我做错了什么?
我的Linq定义有问题吗
谢谢当您将
与
一起使用时,类的属性应该用逗号分隔
试一下,如下图所示
Select New Sample With {.Field1 = ....., .Field2 =........}
该代码段在字段定义之间缺少逗号
With {.Field1 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(0)), "Missing Field1", dr.Field(Of String)(0)) _
.Field2 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(1)), "Missing FIeld2", dr.Field(Of String)(1))}
应该是:
With {.Field1 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(0)), "Missing Field1", dr.Field(Of String)(0)), _
.Field2 = IIf(String.IsNullOrEmpty(dr.Field(Of String)(1)), "Missing FIeld2", dr.Field(Of String)(1))}