LINQ to SQL将结果分配给VB.net中的另一个对象

本文关键字:net 一个对象 VB SQL to 结果 分配 LINQ | 更新日期: 2023-09-27 18:11:24

我试图在选择语句中将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#中使用new关键字来选择。

LINQ to SQL将结果分配给VB.net中的另一个对象

 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()

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

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()