0

したがって、使用する必要がある API 呼び出しからの一連のデータがあります。以下のコードを使用して、サブセットを修正し、特定のフィールドにアクセスするようにフィルタリングします。と を取得するより良い方法はcurrentDateありbeforeCurrentDateますか?

DateTime beforeCurrentDate, currDate;

var curr = from c in GlobalResults<FinancialYear>.Results
    where c.IsCurrentYear = true
        select c;

var prev = from c in GlobalResults<FinancialYear>.Results
    where c.ID < curr.FirstOrDefault().ID && c.YearEnd == curr.FirstOrDefault ().YearStart.AddDays(-1)
        select c;


foreach (var cfy in curr)
{
    currDate = cfy.YearEnd;
}

foreach (var pfy in prev)
{
    beforeCurrentDate = pfy.YearStart.AddDays (-1);
}

foreach が間違った方法であることはわかっているので、何を使用すればよいですか?

編集: API の結果に含まれるものは、IsCurrent フィールドが true に設定された一連の日付です。IsCurrent = true 結果の EndDate フィールドと、前の結果の StartDate フィールドが必要です。StartDate から EndDate までの期間の前の ito。現在の日付範囲の後に以前の日付範囲がキャプチャされる可能性があるため、ID フィールドは役に立ちません。

4

2 に答える 2

2
var curr = GlobalResults<FinancialYear>.Results.FirstOrDefault(c => c.IsCurrentYear);
var prev = GlobalResults<FinancialYear>.Results.FirstOrDefault(c => c.ID < curr.ID && c.YearEnd == curr.YearStart.AddDays(-1));

var currDate = curr.YearEnd;
var beforeCurrentDate = prev.YearStart.AddDays(-1);
于 2013-02-18T14:59:44.433 に答える
0

年を制約し、ループLast()を置き換えるを選択することで、会計年度の現在の日付を取得できます。foreach

var currYear = GlobalResults<FinancialYear>.Results.Where(p=>p.IsCurrentYear == true).Last();
var currDate = currYear.YearEnd;

同様に、 を使用しcurrYearて以前の情報を取得できます。

var prevYear =  GlobalResults<FinancialYear>.Results.Where(p=>p.YearEnd == currDate.AddDays(-1)).FirstOrDefault();
var beforeCurrentDate = prevYear.YearStart.AddDays(-1);
于 2013-02-18T14:58:54.840 に答える