2

毎日のリターンの計算を行う株式分析 (株式) オブジェクトのリスト。これを行うにはペアワイズソリューションが必要だと考えていました:

for(int i = 0; i < sdata.Count; i++){
    sdata[i].DailyReturn = (i > 0) ? (sdata[i-1].AdjClose/sdata[i].AdjClose) - 1
                                   : 0.0;
}
4

2 に答える 2

2

LINQは「言語統合クエリの略です。

LINQ は使用すべきではなく、割り当てにはほとんど使用できません。LINQ は指定された IEnumerable パラメーターを変更しませんが、新しいパラメーターを作成します。

以下のコメントで示唆されているように、 LINQ を使用して新しい IEnumerable を作成する方法があります。これは遅くなり、読みにくくなります。

LINQ は優れていますが、重要なことは、LINQ を使用しない場合を知ることです。

古き良きfor loop を使用してください。

于 2012-11-05T22:22:31.993 に答える
0

私はLINQを初めて使いました.stackoverflowのためにそれを使い始めたので、あなたの質問で遊んでみました.これは反対票を集める可能性があることを知っていますが、リストに少なくとも1つの要素がある場合に試してみました.

sdata[0].DailyReturn = 0.0;
sdata.GetRange(1, sdata.Count - 1).ForEach(c => c.DailyReturn = (sdata[sdata.IndexOf(c)-1].AdjClose / c.AdjClose) - 1);

ただし、for ループを回避することはベスト プラクティスではないと言わざるを得ません。私の観点からは、LINQ は便利な場所で使用する必要があり、どこでも使用する必要はありません。古き良きループは、維持しやすい場合があります。

于 2012-11-05T22:37:44.907 に答える