2017-12-22 5 views
0

:新たに設けられ、小数点は+内であれば フィルタリングと計算のシナリオ?オブジェクトの以下の配列を指定して

  • 決定

    1. はコードXのための最も初期の価格を取得します?:するエレガントな方法は何ですか

      [ 
      { Code="X", Price=".01", DateTime="12/01/2017 08:00pm" }, 
      { Code="Y", Price=".02", DateTime="12/01/2017 05:40pm" }, 
      { Code="X", Price=".03", DateTime="12/01/2017 02:00pm" } 
      ] 
      

      /その価格の-10%ですか?

  • 答えて

    0

    まあ、これは簡単な...

    using System; 
    using System.Diagnostics; 
    using System.Linq; 
    
    namespace Test { 
        class Program { 
         static void Main(string[] args) { 
          var items = new[] { 
           new { Code= "X", Price=0.01, DateTime="12/01/2017 08:00pm" }, 
           new { Code ="Y", Price=0.02, DateTime="12/01/2017 05:40pm" }, 
           new { Code ="X", Price=0.03, DateTime="12/01/2017 02:00pm" } 
          }; 
          var newItem = new { Code = "X", Price = 0.04, DateTime = "12/01/2017 09:00pm" }; 
    
          var xItems = items.Where(x => x.Code == "X"); 
          var minDateTime = xItems.Select(x => x.DateTime).Min(); 
          Debug.WriteLine($"minDateTime={minDateTime}"); 
    
          var minItem = xItems.Where(x => x.DateTime == minDateTime).Single(); 
          Debug.WriteLine($"minItem.Price={minItem.Price}"); 
    
          bool withinPercent = Math.Abs(newItem.Price/minItem.Price - 1.0) < 0.1; 
          Debug.WriteLine($"newItem within 10%={withinPercent}"); 
         } 
        } 
    } 
    

    この出力...

    minDateTime=12/01/2017 02:00pm 
    minItem.Price=0.03 
    newItem within 10%=False 
    
    +0

    感謝kのようです。コードXをフィルタリングするようにコードを更新してください。このセットには、提供した元のコードにコード(たとえば、コード= "Y")などの差分コードが含まれます。 – user8570495

    関連する問題