2015-08-27 1 views
0

я следующие записиLINQ синтаксиса для заказа По наибольшему значению SUM из коллекции детской

User 
--------------- 
UserID | Name 
--------------- 
    1 | Johan 
    2 | Rick 
--------------- 

UserDetail 
---------------------------------- 
UserDetailID | UserID | Percentage 
---------------------------------- 
     1  | 1 |  10 
     2  | 1 |  30 
     3  | 2 |  50 
     4  | 2 |  10 
---------------------------------- 

В основном я хочу SUM процента за UserID и порядка по величине общего процента.

В 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 

ответ

3

Это звучит, как вы не хотите использовать SelectMany вообще - вы хотите только одну строку для каждого пользователя. Я подозреваю, вы хотите:

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

это работает. благодаря! – warheat1990

Смежные вопросы