代码之家  ›  专栏  ›  技术社区  ›  André Haupt saber safavi

与SQL或LINQ进行数据绑定

  •  0
  • André Haupt saber safavi  · 技术社区  · 16 年前

    我正在C中创建一个自定义报告应用程序,需要聚合一些数据。

    让我们简单点。假设我一年有10000个销售,我需要一种通用的方法来按月、日或小时对数据进行存储。因此,每个料仓将合计该期间内的所有销售额。

    有人用SQL或LINQ编写过这样的查询吗?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Brian Mains    16 年前

    传统上,它是:

    (from s in Sales
    where s.SalesDate.Year = 2009
    && s.SalesDate.Month = 2
    select s.Amount).Sum();
    

    现在,您可以使其具有灵活性,例如:

    .. GetData(TimePeriod period)
    {
    return (from s in Sales
      where
      (
         //timeframe is enum of month, day, hour
         period.TimeFrame == TimeFrame.Month 
         && s.SalesDate.Year == period.year
         && s.SalesDate.Month == period.Month
      )
      ||
      (
         period.TimeFrame == TimeFrame.Day
         && s.SalesDate.Year == period.Year
         && s.SalesDate.Month == period.Month
         && s.SalesDate.Day == period.Day
      )
      ||
      (
        ..
      )
      select s);
    
    }
    

    唯一我不确定的是您是否可以使用枚举进行计算;您可以为每个条件添加布尔值:

    bool isMonth = (period.TimeFrame == Timeframe.Month);
    

    并更改查询,以便使用ismonth&而不是period.timeframe==timeframe.month。

    这是最灵活的方法。另一种更灵活的方法是手动循环每个记录以聚合数据,并为此创建一个通用方法…

    希望一切都有意义:(-)

    推荐文章