0

データコンテキストのテーブルから日付と平均値を選択する必要があり、年と月でグループ化する必要があります。SQLでは、次のようになります

select Year(data) as years, Month(data) as months, Avg(value) as prices from Prices
group by Year(data),MONTH(data)
order by years, months

LINQ クエリを作成しました

var query0 = from c in dc.Prices
             where Convert.ToDateTime(c.data).CompareTo(left) >= 0
                   && Convert.ToDateTime(c.data).CompareTo(right) <= 0
                   && c.idsticker.Equals(x)
              group c by new { ((DateTime)c.data).Year, ((DateTime)c.data).Month }
                    into groupMonthAvg
              select groupMonthAvg;

しかし、結果の平均値を取得する方法がわかりません

4

3 に答える 3

1

でAverage関数を使用するだけselectです。

var query0 = from c in dc.Prices
         where Convert.ToDateTime(c.data).CompareTo(left) >= 0
               && Convert.ToDateTime(c.data).CompareTo(right) <= 0
               && c.idsticker.Equals(x)
          group c by new { ((DateTime)c.data).Year, ((DateTime)c.data).Month }
                into groupMonthAvg
          select new {
              groupMonthAvg.Key.Year, 
              groupMonthAvg.Key.Month, 
              YearAverage = groupMonthAvg.Average(x=>x.Year),
              MonthAverage = groupMonthAvg.Average(x=>x.Month)
              };
于 2012-07-09T17:20:27.023 に答える
1

これはそれを行う必要があります:

var query0 = from c in dc.Prices
             where Convert.ToDateTime(c.data).CompareTo(left) >= 0
                   && Convert.ToDateTime(c.data).CompareTo(right) <= 0
                   && c.idsticker.Equals(x)
              group c by new { ((DateTime)c.data).Year, ((DateTime)c.data).Month }
                    into groupMonthAvg
              select new { Year = groupMonthAvg.Key.Year, Month = groupMonthAvg.Key.Month, Average => groupMonthAvg.Average(i => i.value) };
于 2012-07-09T17:21:05.397 に答える
1

平均関数を使用します。

var query0 = from c in dc.Prices
             where Convert.ToDateTime(c.data).CompareTo(left) >= 0
                   && Convert.ToDateTime(c.data).CompareTo(right) <= 0
                   && c.idsticker.Equals(x)
              group c by new { ((DateTime)c.data).Year, ((DateTime)c.data).Month }
                    into groupMonthAvg
              select new
              {
                  years = groupMonthAvg.Key.Year,
                  months = groupMonthAvg.Key.Month,
                  prices = groupMonthAvg.Average(x=>x.value)
              };
于 2012-07-09T17:22:10.500 に答える