0

我已经将一些 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#,但是像这样的一些点我不明白为什么我会收到这个错误请帮助,因为我是 vb.net 的新手

4

1 回答 1

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实现的一部分。这些差异都与命名类型无关。

于 2013-11-04T10:44:26.790 回答