代码之家  ›  专栏  ›  技术社区  ›  TooFast

在linq中有没有一种方法可以使用over with order by子句?

  •  1
  • TooFast  · 技术社区  · 6 年前

    SELECT  sum(number) over (order by number)
    
    FROM tableName
    

    你知道怎么做吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Alpha75    6 年前

    也许这可以奏效:

    已编辑(我已经尝试了您的查询,我认为这是您正在寻找的)

    List<TableName> tableNames = new List<TableName> {
        new TableName { Number = 2},
        new TableName { Number = 4},
        new TableName { Number = 3},
        new TableName { Number = 3},
        new TableName { Number = 2},
        new TableName { Number = 3},
        new TableName { Number = 4},
        new TableName { Number = 4},
        new TableName { Number = 4},
        new TableName { Number = 4}
    };
    
    IEnumerable<int> runningSum = tableNames.Select(r => (tableNames.Where(ri => ri.Number <= r.Number).Sum(rii => rii.Number))).OrderBy(num => num);
    

    结果:

    4
    4
    13
    13
    13
    33
    33
    33
    33
    33