3

すべてのメンバーにいくつかの要素が含まれ、すべての要素にOADate(Excel形式)の日付を表すfloat変数Dがあるデータ系列があります。シリーズのいずれかが「隣人」と交差するかどうかを調べる必要があります。したがって、結果は1つのブール値になります。LINQでこれを行う方法はありますか?これは私の現在の作業コードです

         bool overlaps = false;
        for (int i = 0; i < series.Count-1; i++) {
            if (series[i].elements.Last().D > series[i + 1].elements.First().D) {
                overlaps = true;
                break;
            }           
        }

ありがとう :-)

4

2 に答える 2

4
series.Skip(1)
      .Where((s,i) => series[i].elements.Last().D > s.elements.First().D).Any();

説明: したがって、最初の要素をスキップしたため、実際にはサンプルseries[i]と同じになり、 index の項目になります。series[i]sseries[i+1]

于 2012-12-30T11:22:23.037 に答える
1
series.Zip(series.Skip(1).Concat(series.Take(1)), (a, b) => 
        new { a = a, b = b })
       .Any(c=>c.a.elements.Last().D > c.b.elements.First().D);

それ自体を 1 つずつ丸めた状態で圧縮し、メインのアイテムと回転しseriesたアイテムの対応するアイテムを比較します。series

于 2012-12-30T11:25:15.637 に答える