【问题标题】:LINQ to SQL assign results to another object in VB.net?LINQ to SQL 将结果分配给 VB.net 中的另一个对象?
【发布时间】:2014-07-03 17:12:36
【问题描述】:

我正在尝试在 select 语句中将 vw_Source_Columns 的结果分配给 vw_UI_List_Search_Columns。在vb.net怎么做?

Partial Public Class vw_Source_Columns
    Public Property Source As String
    Public Property Field_Name As String
    Public Property Field_Type As String
    Public Property strSourceColumn As String
    Public Property strSourceName As String
    Public Property strDataViewName As String
    Public Property intColumnID As Integer
    Public Property intMaster As Integer

End Class

Public Class vw_UI_List_Search_Columns
    Public Property Source As String
    Public Property Field_Name As String
    Public Property Field_Type As String
    Public Property strSourceColumn As String
    Public Property strSourceName As String
End Class


Dim query = From tblSources In writingEntities.vw_Source_Columns.AsNoTracking
            query = query.Where(Function(tblSources) tblSources.strSourceName = tblName).OrderBy(Function(tblSources) tblSources.strSourceColumn)
            'Dim lstfields As List(Of vw_UI_List_Source_Columns) = query.ToList() 
               '' assign query results of List (Of vw_UI_List_Source_Columns) 
               '' to List (Of vw_UI_List_Search_Columns) to suitable columns.

如何在 vb.net 中做到这一点?我以前在 C# 中通过在 select 中使用 new 关键字来做。

【问题讨论】:

标签: c# sql vb.net linq


【解决方案1】:
 Dim lstfields As List(Of vw_UI_List_Search_Columns) = query.Select(Function(e) New vw_UI_List_Search_Columns With {.Source = e.Source, .Field_Name = e.Field_Name, etc...}).ToList()

【讨论】:

    【解决方案2】:

    您必须创建一个实例并手动设置属性,如下所示:

    Dim lstfields As List(Of vw_UI_List_Search_Columns)
    lstfields = query.Select(Function(SourceItem) _
                                 New vw_UI_List_Search_Columns() with _
                                     {.Source = SourceItem.Source,
                                      .Field_Name = SourceItem.Field_Name,
                                      .Field_Type = SourceItem.Field_Type,
                                      .strSourceColumn = SourceItem.strSourceColumn,
                                      .strSourceName = SourceItem.strSourceName}).ToList()
    

    如果你使用继承,那么 vw_Source_Columns 类是 vw_UI_List_Search_Columns 的继承人,你可以完全按照你的方式做(除了 Cast(Of vw_UI_List_Search_Columns) 像这样:

    Public Class vw_Source_Columns 
        Inherits  vw_UI_List_Search_Columns
    
        Public Property strDataViewName As String
        Public Property intColumnID As Integer
        Public Property intMaster As Integer
    End Class
    
    Public Class vw_UI_List_Search_Columns
        Public Property Source As String
        Public Property Field_Name As String
        Public Property Field_Type As String
        Public Property strSourceColumn As String
        Public Property strSourceName As String
    End Class
    
    
    Dim query = From tblSources In writingEntities.vw_Source_Columns.AsNoTracking
    query = query.Where(Function(tblSources) tblSources.strSourceName = tblName).OrderBy(Function(tblSources) tblSources.strSourceColumn)
    Dim lstfields As List(Of vw_UI_List_Source_Columns) = query.Cast(Of vw_UI_List_Search_Columns).ToList() 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      相关资源
      最近更新 更多