2013-05-16 3 views
0

У меня есть таблица, в которой каждая строка содержит идентификатор команды, идентификатор пользователя и логическое значение, указывающее, является ли этот пользователь представителем. Пользователи могут быть представителями более чем одной команды, а команды могут иметь более одного представителя. Я пытаюсь выяснить, кто является самым плодовитым представителем и сколько команд они являются представителем. На самом деле, мне все равно, кто это, только сколько команд они являются представителем.Как преобразовать инструкцию вложенного SQL-запроса с несколькими агрегатными функциями в LINQ?

Я могу сделать это легко в SQL с приведенным ниже, но я не могу понять, как это записать в LINQ. Я хотел бы избежать хранимой процедуры, если это возможно, поскольку они очень редко используются в этом приложении, и я хотел бы поддерживать согласованность.

SELECT MAX(a.RepCount) as TeamMaxRepCount 
FROM 
(SELECT DelegateUserID, COUNT(*) AS RepCount 
FROM TeamDelegates 
GROUP BY DelegateUserID) as a 
+0

возможно: 'int result = TeamDelegates.GroupBy (x => x.DelegateUserID) .Max (g => g.Count());' –

ответ

2

В обратном порядке. Например:

var x = TeamDelegates.GroupBy(t => t.DelegateUserID) 
        .Select(t => new { 
              DelegateUserID = t.Key, 
              RepCount = t.Count() 
             }) 
        .Max(t => t.RepCount); 

Какое точное представление о вашем SQL-запросе. Это может быть просто просто, как sa_ddam213, упомянутое в его комментарии.

+0

Не должно быть 'DelegateUserID = t.Key'? – recursive

+0

@рекурсивный, конечно же он должен! так почему бы вам не написать так? ;-) Спасибо! –

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