2017-12-08 26 views
1

사과 세 이상이어야합니다 어디에 ... 내가 코딩에서 정확히 잘 모르겠지만, 간다. 클래스의 목록에서 최소 및 최대 값을 찾기 만 분의 개체가 최대

는 기본적으로 나는에 대한 최소 및 최대를 얻을 것인지, 클래스의 목록을 가지고있다. 나를 걸러내는 부분은 시간 순서대로 최소값과 최대 값이 필요하다는 것입니다. 바라기를 그려 보면 그림의 의미를 알 수 있습니다. 위에서 볼 수 있듯이

Graph of object with date and value

는 첫 번째 값은 실제로 최대이지만, 최소한 다른 2 개 단위 아닙니다.

그래서 내가이 곳에 문을 만들려고하지만 클래스 변수 유형은 쿼리 혼합하는 방법을 알아낼 수 없었다 제대로 ... 최소의 날짜가 최대 세 이상이어야합니다도 방법, 아직 최대 값을 알지 못함 (또는 그 반대). ...

은 물론 아래의 코드는 전혀 작동하지 않으며, 최소/최대 값을 얻기에 논리에 결함이 있지만, 잘하면 내가 할 노력하고있어 이해하는 데 도움을주는

 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.Date , OrderByDesc을 수있다 -
+0

음으로 주문해야 그 뒤를 따르는 모든 대상에서 시간순으로. 시도한 후에 게시물을 업데이트하십시오. –

+0

분을 먼저 받고 싶습니다. 그런 다음 두 개의 최대 값을 찾습니다. 하나는 분보다 빠르고 하나는 분보다 늦었다. – jdweng

답변

0

내가 먼저

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

나중에 내가 최대 날짜를 결정하는 것 먼저 가장 낮은 값을 얻기 위해 최소 날짜 OrderBy를 결정하는 것 모든 개체에 대한 절대 최소 찾은 다음 최대 검색 : 일

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

업데이트은 ... 당신은, 다음, 논리가 있어야 Value 아닌 Date

+0

보기 지금 나는 바보처럼 느껴진다. 최소 (예 : 추세 트렌드 등) 이후에 최대 값이 없으면 오류 처리가 해당 사항을 처리 할 것인가에 대해 생각하고있었습니다 ... 감사합니다. –

+0

그 경우 기대 값이 더 이상 없다면'FirstOrDefault'를 사용하여'null'을 반환하십시오 – fubo