0

我使用以下代码用在 LINQ 查询中找到的信息填充 Table1 字典。

 Dim DB As New DatabaseDataContext
 Dim Table1 As New Dictionary(Of String, Integer)
 Dim Table2 As New Dictionary(Of String, Integer)

        Private Function FillTable() As Dictionary(Of String, Integer)
            Table1.Clear()
            Dim Query = From c In DB.Table1 Select New With _
                                     {.Table1ID = c.Table1ID, .Table1 = c.Table1}
            For Each c In Query
                Table1.Add(c.Table1, c.Table1ID)
            Next
            Return Table1
        End Function

我应该对上面的函数进行哪些更改以填充任何给定的 TableXXX 字典?你看,我不想使用下面的函数来填充 Table2 字典。

        Private Function FillTable2() As Dictionary(Of String, Integer)
            Table2.Clear()
            Dim Query = From c In DB.Table2 Select New With _
                                     {.Table2ID = c.Table2ID, .Table2 = c.Table2}
            For Each c In Query
                Table2.Add(c.Table2, c.Table2ID)
            Next
            Return Table2
        End Function
4

2 回答 2

1

我不知道这是否属实,但这似乎是 MS c# SimpleLinqToDatabase 示例应用程序的 VB 版本。

如果是这样,如果您让所有表格行数据模型类型都具有相同的属性 TableID 和表格,那么它会起作用。然后用泛型方法获取表数据。如果您不希望这样,则需要更改基本模型以通过带有反射的字符串来获得属性访问器,但这在数据模型上并不是很聪明和快速。

    Private Function FillTable(Of T)() As Dictionary(Of String, Integer)
        Dim dict as New Dictionary(Of String, Integer)
        Dim Query = From c In DB.GetTable(Of T) Select New With _
                                 {.TableID = c.TableID, .Table = c.Table}
        For Each c In Query
            dict.Add(c.Table, c.TableID)
        Next
        Return dict
    End Function

然后调用它:

Dim result as Dictionary(Of String, Integer)
result = FillTable(Of Table1)()
于 2011-07-03T08:00:33.650 回答
1

“ToDictionary()”扩展方法呢?

http://msdn.microsoft.com/en-us/library/bb549277.aspx

于 2011-07-03T12:29:31.200 回答