我正在尝试使用此代码来从我的数据库中选择数据信息并将结果查询放在列表中,然后将结果添加到我稍后将要使用的新列表中...但这给了我错误:
无法将
类型WhereSelectListIterator< jTableSampleDatabaseLayer.Hik.JTable.Models.Concour, VB$AnonymousType_0<string, int?, int?, DateTime, int, int, string, int?>>
类型的对象转换为IEnumerable<jTableSampleDatabaseLayer.Hik.JTable.Models.Concour>
Imports System.Collections.Generic
Imports System.Text
Imports jTableSampleDatabaseLayer.Hik.JTable.Models
Namespace Hik.JTable.Repositories.Memory
Public Class MemoryData
Dim x As jTableSampleDatabaseLayer.totofootEntities = New jTableSampleDatabaseLayer.totofootEntities
Public Function ListeConcours() As MemoryDataSource
Dim dataSource = New MemoryDataSource()
Dim liste As List(Of Concour) = x.Concours.ToList()
Dim ccrs = From concours In liste Select concours.numero_concours, concours.numero_type, concours.numero_nature, concours.date_de_sortie, concours.nbre_matchs, concours.nbre_rangs, concours.titre_concours, concours.numero_etape
dataSource.Concours.AddRange(ccrs)
Return dataSource
End Function
End Class
End Namespace
正如你所看到的,我可能真的不知道如何解决这个问题。有没有人对我可能做错了什么以及如何解决它有任何见解?
这是类memorydatasource:
`Imports System.Collections.Generic
导入jTableSampleDatabaseLayer.Hik.JTable.Models
命名空间Hik.JTable.Repositories.Memory
Public Class MemoryDataSource
Public Property Types As List(Of Type)
Public Property Concours As List(Of Concour)
Public Property Natures As List(Of Nature)
Public Property Etapes As List(Of Etape)
Public Sub New()
Types = New List(Of Type)()
Natures = New List(Of Nature)()
Etapes = New List(Of Etape)()
Concours = New List(Of Concour)()
End Sub
End Class
结束命名空间
`
答案 0 :(得分:0)
我想您需要将选择结果放入 Councur 类型的新对象中。然后,您就可以将查询添加到 Councours 列表中:
' pseudo code!!!
Dim ccrs = From concours In liste
Select new Councur
Num = concours.numero_concours
Typ = concours.numero_type,
Nat = concours.numero_nature,
Dat = concours.date_de_sortie,
Mat = concours.nbre_matchs,
Ran = concours.nbre_rangs,
Con = concours.titre_concours,
Eta = concours.numero_etape
答案 1 :(得分:0)
查询
From concours In liste
Select concours.numero_concours,
concours.numero_type,
concours.numero_nature,
concours.date_de_sortie,
concours.nbre_matchs,
concours.nbre_rangs,
concours.titre_concours,
concours.numero_etape
返回具有anonymous type的值(因为您指定了多个要选择的值),而不是dataSource.Concours.AddRange
所期望的值类型,这似乎是Concour
。
如果你完全避免查询,你应该添加正确的东西。我不确定这段代码是否符合你的要求,但它更有可能编译:
Dim x As jTableSampleDatabaseLayer.totofootEntities = New jTableSampleDatabaseLayer.totofootEntities
Public Function ListeConcours() As MemoryDataSource
Dim dataSource = New MemoryDataSource()
Dim liste As List(Of Concour) = x.Concours.ToList()
dataSource.Concours.AddRange(liste)
Return dataSource
End Function
我相信上面的代码会创建一个内存的concours副本并将其返回,作为MemoryDataSource公开。有可能避免使用ToList
,具体取决于AddRange的语义。