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の初心者であるため、このエラーが発生する理由がわかりませんplz help

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 に答える