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 回答