我已将一些C#代码转换为VB.net
C#代码:
private static List<Hotels> LoadData()
{
List<Hotels> lst = new List<Hotels>();
DataTable dt = new DataTable();
var bl = new BAL();
dt = bl.GetDataTable("tbl_Hotel");
foreach (DataRow dr in dt.Rows)
{
lst.Add(new Hotels { Id = Convert.ToInt32(dr["PId"]), HotelName = Convert.ToString(dr["HotelName"]) });
}
return lst;
}
代码转换为VB:
Private Shared Function LoadData() As List(Of Makes)
Dim bl As New BAL
Dim lst As New List(Of Makes)()
Dim dt As New DataTable()
dt = bl.GetDataTable2()
For Each dr As DataRow In dt.Rows
lst.Add(New Makes() With { _
'Here an error occur on "Key" Word
Key .Id = Convert.ToInt32(dr("ID")), _
Key .MakeName = Convert.ToString(dr("CHASSIS_NO")), _
Key .Model = Convert.ToString(dr("MODEL")), _
Key .Color = Convert.ToString(dr("color")), _
})
Next
Return lst
End Function
我面临的错误是
在对象初始值设定项中初始化的字段或属性的名称必须以“。”开头。
我主要使用Asp.net C#和几乎vb和C#可以理解,但有些点这样我不明白为什么我得到这个错误PLZ帮助因为我是vb.net的新手
答案 0 :(得分:3)
您只能将Key
与匿名类型一起使用 - 而不是对象初始值设定项。所以你的VB代码应该是:
lst.Add(New Makes() With { _
.Id = Convert.ToInt32(dr("ID")), _
.MakeName = Convert.ToString(dr("CHASSIS_NO")), _
.Model = Convert.ToString(dr("MODEL")), _
.Color = Convert.ToString(dr("color")), _
})
在匿名类型上,Key
使该属性为只读,表示它属于Equals
/ GetHashCode
实现的一部分。这些差异在命名类型中都不相关。