Dim datarecord = (From animal In dt Where animal.Field(Of Date)("年月") <= getCalcDate And animal.Field(Of Date)("年月") >= minCalcDate Order By animal.Field(Of Date)("年月") Descending Select animal)
For Each field In datarecord
Console.WriteLine(field("年月"))
Next
ではどうでしょうか?
早そうな遅延評価を実行させるように
プログラムを書き換えました。
でもうまくできませんでした。
「シーケンスに要素が含まれていません」
が表示されます。
Dim getDate As Date 'ある年月
Dim tbData As DataTable 'データ
Dim total as Decimal '合計値
tbData にテーブルデータ取得
Dim datarecord = (From animal In tbData Where animal.Field(Of Date)("年月") <= getCalcDate Order By animal.Field(Of Date)("年月") Descending Select animal).First
'対象年月分ループ
Do Until getCalcDate < 最小日付
total +=datarecord("データ")
getCalcDate = (getCalcDate を減らす式)
Loop
補足
ありがとうございます。 やってみましたがLINQの方が早く処理が終わりました。 'DataTableにSelect Do Until getCalcDate < minCalcDate 'Dim datarecord = tbData.Select("年月<=#" & getCalcDate & "#", "年月 DESC") '取得した1行目の合計を計算 XXXXXXXX '次の検索する年月の作成 getCalcDate = DateAdd(DateInterval.Minute, 1, getCalcDate) Loop 'LINQで検索 Do Until getCalcDate < minCalcDate Dim datarecord = (From animal In tbData Where animal.Field(Of Date)("年月") <= getCalcDate Order By animal.Field(Of Date)("年月") Descending Select animal).First '取得した1行目の合計を計算 XXXXXXXX '次の検索する年月の作成 getCalcDate = DateAdd(DateInterval.Minute, 1, getCalcDate) Loop LINQをDo Uintilの外に出すと 結果が間違って返ってきます。