2017-10-02 5 views
0

私はlinqで新しく、ちょっと混乱しています。以下では、平均をm_corected_avm_wind_speedとする必要があります。私にヒントを与えてもらえますか?linqで2つの異なる列の平均を取得するにはどうすればよいですか?

var ChartDetails = (from c in db.StatisticsMonthlies 
          join d in db.MasterDatas 
          on c.m_turbine_id equals d.m_turbine_id 
          join s in db.UsersTurbines 
          on d.turbine_id equals s.tur_id 
          where c.m_date > lastyeardate && s.user_id == useID 
          select new MonthlyDailyStatsOfTurbines 
          { 
           m_energy_prod = (int)c.m_energy_prod, 
           turbine_name = d.turbine_name, 
           m_wind_speed = Math.Round((Decimal) c.m_wind_speed), 
           m_wind_speed = (int)c.m_wind_speed, 
           m_date = c.m_date,         
           m_corrected_av = c.m_corrected_av, 

          }).ToList().OrderBy(m => m.m_date).Select(o => new MonthlyDailyStatsOfTurbines 
          { 
           m_energy_prod = (int)o.m_energy_prod, 
           turbine_name = o.turbine_name, 
           //m_wind_speed = Math.Round((Decimal) c.m_wind_speed), 
           m_wind_speed = (int)o.m_wind_speed, 
           m_date = o.m_date, 
           m_data_completeness = o.m_data_completeness, 
           m_corrected_av = o.m_corrected_av, 
           date_test = o.m_date.ToString("MMMM yyyy") 

          }).ToList(); 

答えて

2

あなたの質問はさまざまな方法で理解できます。あなたがリスト内のAVの平均と平均の風速​​をボットしたいなら、あなたはsthに行くことができます。以下のような:

var avg_corrected_av = ChartDetails.Average(x => x.m_corected_av); 
var avg_wind_speed = ChartDetails.Average(x => x.m_wind_speed); 

あなたは、結果セット内のAVの各項目の風速の平均値のリストをしたい場合は、あなたが行うことができます:

var avg = ChartDetails.Select(x => (x.m_corected_av + x.m_wind_speed)/2); 
私がして、グループを使用する必要があります
+0

? – bravo83

+0

グループ化する必要はありません – nozzleman

+0

既にリストに変換されているため、データベースクエリは既に実行されています。 – nozzleman

関連する問題