Вы не можете эффективно выбрать несколько агрегатов в vanilla LINQ to Objects. Конечно, вы можете выполнять несколько запросов, но это может быть неэффективно в зависимости от вашего источника данных.
У меня есть фреймворк, который справляется с этим, который я называю «Push LINQ» - это всего лишь хобби (для меня и Марка Гравелла), но мы считаем, что он работает довольно хорошо. Он доступен как часть MiscUtil , и вы можете прочитать об этом в моем блоге об этом .
Это выглядит немного странно - потому что вы определяете, куда вы хотите, чтобы результаты отображались как «фьючерсы», затем проталкиваете данные через запрос, затем извлекаете результаты - но как только вы обдумаете это, все будет хорошо. Мне было бы интересно услышать, как вы справляетесь с этим - если вы используете его, пожалуйста, напишите мне по адресу skeet@pobox.com.