0

私がやろうとしていることを達成するためのより良い方法があるかどうか尋ねたかった.

指定された日付以上の日付を持つ子グラフのすべてのレコードと、指定された日付よりも小さい日付を持つ最初のレコードを取得する必要があります。

この解決策が機能することがわかりましたが、これが最善の方法であるかどうかはわかりません。

var q = context.Istc0.Include("Interests").Where(a => a.IIsin == listKey).Select(a => new
{
    Istc0 = a,
    Interests = a.Interests.Where(d => d.InDat >= date)
});

var qq = context.Istc0.Include("Interests").Where(a => a.IIsin == listKey).Select(a => new
{
    Istc0 = a,
    Interests = a.Interests.Where(d => d.InDat < date).OrderByDescending(d => d.InDat).Take(1)
});

var xxx = q.ToList()[0].Istc0;
xxx = qq.ToList()[0].Istc0;

return xxx;
4

2 に答える 2

0

こんにちは、答えてくれてありがとう。

あなたが投稿したクエリでは、必要なすべてのデータを取得できません。1回のクエリで必要なものを取得できるとは思いません。

利息表
-----------------
2013 年 5 月 16 日 | 1%
2013-6-21 | 0.8%
2013-7-12 | 0.5%
2013-8-06 | 0.6%

istc0 テーブルにはすべての私の isin 番号が含まれており、interest テーブルとの関係として One to Many です。

関数のパラメーターの 1 つは日付です。たとえば、私が合格した場合

日付 = 2013-7-01

私が必要とする結果は次のとおりです。

利息表
-----------------
2013-6-21 | 0.8%
2013-7-12 | 0.5%
2013-8-06 | 0.6%

したがって、私の最初の投稿では、q に割り当てられた最初のクエリは最初の 7 月の後にすべての関心を取得し、qq に割り当てられた 2 番目のクエリは最初の 7 月の前に最初の金利を取得します。私の関数は仕事をし、必要なデータのセットを取得しますが、それを行うための最もクリーンな方法ではないようです。

于 2013-08-27T06:21:22.000 に答える