簡単な概要:
Visual Basic 2010 WinForm アプリは DB2 からデータをプルします。アプリを使用すると、ユーザーはデータをフィルター処理できます。
問題:
データセット内のフィールドにアクセスできないため、LINQ クエリ (またはオブジェクト定義) に問題があります。DB2 からのデータのプルは問題ありません。そのデータを取得し、IEnumerable として保存します。
ユーザーの 95% が読み取り専用で、100,000 件以上のレコードにアクセスするため、このアプリを切断して実行する予定です。このため、2 つのデータセットがあります。1) DB2 から取得した完全なデータセットである「データ」(変更する予定はありません)、(2) に基づくデータのサブセットである「filteredData」ユーザーがフィルターを入力しました。
Dim data As IEnumerable
Dim dataFiltered = From record in data
Select record
'Filter data based on version
Select case uxCodeVersion.Text
Case "10"
dataFiltered = From rec in dataFiltered
Where rec.
... (other parts of case statement removed)
End Select
これは私の問題です。「rec.」内のフィールドのリストが表示されることを期待しています。(rec.CodeVersion など) ;ただし、オブジェクト メソッド (Equals、GetHashCode、GetType、ReferenceEquals、ToString) を受け取るだけです。
私が見逃している簡単なことは何ですか?
パフォーマンスも問題ですが、一度に1つの問題を考え出しました...
ありがとう、
ブライアン。
以下に示すように、ここに答えがあります。
データを定義するときは、ジェネリック リスト DTO に定義する必要があります。したがって、私の場合、それは次のようになります。
Dim data As IEnumerable(Of DataAccessLayer.DiagnosisAndDiagnosisIndustryCombinedDTO)
次に、コードにアクセスするときは、以前と同じですが、一時的に dataFiltered フィールドを取り出してデータを使用しただけです。
dataFiltered = From rec in data
Where rec.CodeVersion = uxCodeVersion.Text