-1

私がこのコードでやろうとしているのは、データベースからデータ情報を選択し、結果クエリをリストに入れ、後で使用する新しいリストに結果を追加することです...しかし、それは私にエラー:


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

名前空間の終了

`

4

2 に答える 2

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

は、 が期待する値の型ではなく、匿名型の値を返します(選択する値を複数指定したため) 。dataSource.Concours.AddRangeConcour

クエリを完全に回避する場合は、適切な種類のものを追加する必要があります。このコードがあなたの望むとおりに機能するかどうかはわかりませんが、コンパイルされる可能性が高くなります。

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

上記のコードはコンクールのメモリ内コピーを作成し、それを返し、MemoryDataSource として公開していると思います。ToListAddRange のセマンティクスによっては、を回避できる場合があります。

于 2013-09-01T19:12:24.990 に答える