2017-12-08 4 views
1

謝罪...私はコーディングではあまりうまくいかないが、ここに行く。クラスのリストで最小値と最大値を見つけるが、最小値はmaxよりも古い必要がある

基本的に、クラスのリストがあり、最小値と最大値を取得する必要があります。私をひっくり返している部分は、私は時系列になるために最小値と最大値が必要であるということです。うまくいけば、図面は私の意味を示すのに役立ちます。

Graph of object with date and value

あなたが上見ることができるように、最初の値は実際には最大ですが、最小値は、他の2つの増加のためではありません。

私はwhereステートメントを作成しようとしていましたが、クラス変数の型を正しく照合する方法を理解できませんでした...また、minの日付はmax、まだ最大値を知ることなく(あるいはその逆)。

明らかに以下のコードは全く動作しません。また、最小/最大値を取得するのロジックは欠陥がある、うまくいけば、それは私が何をしようとしているの意味を理解できます...

 public static MinMax MinandMax(List<ValueHistoric> InputList, int take) 
     { 
      InputList.Reverse(); 
      var CutList = InputList.Take(take); 
      var CutListMax = CutList.Where(a => a.Value == CutList.Max(b => b.Value) && a.Date > CutList.Min.Date); 
      var CutListMin = CutList.Where(a => a.Value == CutList.Min(b => b.Value) && a.Date < CutList.Max.Date>); 

      //Put Min and Max into variables here 

      MinMax results = new MinMax(); 
      results.Max = last12max; 
      results.Min = last12min; 
      return results; 
     } 

     public class ValueHistoric 
     { 
      public ObjectId Id { get; set; } 
      public DateTime Date { get; set; } 
      public double Value { get; set; } 
      public string Name { get; set; } 
     } 
最高値のモミを取得するには > min.DateOrderByDescでなければならない -
+0

さて、その後、ロジックはあるべき、Valueでない注文する必要がありそれに続くすべてのオブジェクトに時間順に表示されます。あなたがそれを試した後であなたの投稿を更新してください。 –

+0

最初に分を取得したい。次に、2つの最大値を見つけます。 1つは分よりも早く、もう1つは分より後である。 – jdweng

答えて

0

私が最初に

var min = CutList.OrderBy(x => x.Value).First(); 

は、その後、私は最大の日付を決定するであろう最初の最小値を取得するために分日OrderByを決定するであろうすべてのオブジェクトの絶対的な最小値を検索し、最大で検索:ST

var max = CutList.OrderByDesc(x => x.Value).First(a => a.Date > min.Date); 

更新は..あなたはDate

+0

今私はちょうど馬鹿のように感じる。最小値(つまり下降トレンドなど)の後に最大値がなかったと思っていましたが、エラー処理がそれを処理します...ありがとうございました! –

+0

その場合、期待値がなくなると 'FirstOrDefault'を使って' null'を返します – fubo

関連する問題