2017-01-08 14 views
0

次のように私は、プロパティを持つオブジェクトのコレクションを返すために書かれたこのコードを持っている:はに値のコレクションを配置するための...各ループ

Public Shared Function Create() As Collection(Of Element) 
    Return New Collection(Of Element)() From { _ 
    New Element() With { _ 
     .Group = 1, _ 
     .Period = 1, _ 
     .Name = "Hydrogen" _ 
    }, _ 
    New Element() With { _ 
     .Group = 18, _ 
     .Period = 1, _ 
     .Name = "Helium" _ 
    }, _ 
    New Element() With { _ 
     .Group = 1, _ 
     .Period = 2, _ 
     .Name = "Lithium" _ 
    } 
    } 
End Function 

私は今からこれらの値を取得したいと思いコードを再フォーマットする方法を理解することはできません。私の返す手順は次のようなものです:

Public Shared Function CreateDB() As Collection(Of Element) 

     Using db As New DataClassesDataContext(ACCCon) 

      Dim rows = (From row In db.PeriodicTableQs 
         Order By row.ID 
         Select row).ToList() 
      For Each s In rows 
       <<collect the elements here as result>> 
       <<eg, New Element() With {.Group = s.Group}>> 
      Next 

     End Using 

     Return Result 

    End Function 

ありがとう!

+1

なぜ代わりに、別のタイプに手動でそれをキャストする、(PeriodicTableQsの) ''リストである 'row'を返しませんか? – OneFineDay

+0

ありがとう!私は、そのクラスを使用している多くのコードを書き直すことを避けることを考えていました...それはそれを解決します。しかし、ループを書き直す方法を知っていれば本当にうれしいでしょう、私は確かに配列をデータベース呼び出しで置き換える必要があることを知っている他の場所があります:) –

答えて

1

これを試してみてください:

Public Shared Function CreateDB() As Collection(Of Element) 
    Dim ACCCon As String = "ConnectionString" 

    Using db As New DataClassesDataContext(ACCCon) 
    Dim List = db.PeriodicTableQs. 
     OrderBy(Function(Q) Q.ID).ToList. 
     Select(Function(row)       
       Return New Element With {       
       .Group = row.Group,       
       .Name = row.Name,       
       .Period = row.Period       
       }       
      End Function) 
    End Using 

    Return New Collection(Of Element)(List) 
End Function 
+0

ありがとう、InteXX。私が探していたようだが、私はこのエラーが発生している: '関数(行)の開始時に'ステートメントLambdasは表現木に変換することはできません '。 –

+1

@HanningtonMamboは、 'Select'の前に' ToList'を入れます。 – Fabio

+1

@HanningtonMambo:Fabioは正解です。サンプルをモックアップ 'DataClassesDataContext'でテストしました。クラスではなく、実際の 'DataContext'です。私はそれに応じて私の答えを編集しました。 – InteXX

関連する問題