按子集合的最大SUM值排序的LINQ语法

本文关键字:排序 LINQ 语法 子集合 SUM | 更新日期: 2023-09-27 18:10:03

我有以下记录

User
---------------
UserID | Name
---------------
   1   | Johan
   2   | Rick
---------------
UserDetail
----------------------------------
UserDetailID | UserID | Percentage
----------------------------------
      1      |    1   |     10
      2      |    1   |     30
      3      |    2   |     50
      4      |    2   |     10
----------------------------------

基本上,我想将每个UserID的百分比和订单的最大Total百分比相加。

在TSQL中:

SELECT
    User.UserID
FROM
    User
    LEFT JOIN
    (
        SELECT
            SUM(Percentage) [Total],
            UserID
        FROM
            UserDetail
        GROUP BY
            UserID
    ) qry ON
        User.UserID = qry.UserID
ORDER BY
    qry.Total DESC

我的当前代码:

var orderedList = user.SelectMany(s => s.UserDetails).Sum(s => s.Percentage); // <-- I have no idea what I'm doing

按子集合的最大SUM值排序的LINQ语法

听起来您根本不想使用SelectMany—每个用户只需要一行。我怀疑你想要:

var orderedList = users.OrderByDescending(user => user.UserDetails.Sum(d => d.Percentage));