Я думаю, что у вас есть несоответствие в вашем предложении соединения - вы внутренне присоединяете счет к себе по user_id. Я предполагаю, что вы намеревались присоединиться к этому пользователю?
В любом случае, вот мой лучший снимок:
from inv in invoices
group inv by new { inv.user_id } into userInv
join usr in users on userInv.Key.user_id equals usr.user_id
where usr.company_user.company_id = 1
select new
{
usr.firstname,
usr.lastname,
amount = inv.Count(),
sum = inv.Sum(amt => amt.amount)
}
Что касается предложений LINQ, я бы определенно предложил вам скачать и поиграть с LINQPad . Я все время использую его для тестирования операторов LINQ без Visual Studio. Он также преобразует ваши операторы LINQ в SQL, что, вероятно, представляет для вас особый интерес.
Редактировать: Заявление Enigmativity намного ближе к тому, что вы просили, чем мое. Я не сталкивался с группировкой столбцов в примерах, с которыми работал.