Can you count the letter "u" in:
Q: Записать анонимный тип, вычисленный с помощью LINQ в List Есть таблица в БД:
table
-----
T1 T2 T3 T4 ...
1  0  1  0
2  2  1  0
2  1  1  1

Комбинацией различных столбцов вычисляются разные значения и записываются в отдельные переменные. Далее эти значения еще необходимо будет занести в ячейки листа Excel:
var c = (from o in context.table
         group o by 1 into g
         select new
         {
             el2 = g.Sum(x => x.T3 + x.T22) / (g.Count() * 2),
             el2_1 = g.Sum(x => x.T3 + x.T22) / (g.Count() * 1),
             el2_2 = g.Sum(x => x.T22) / (g.Count() * 1),
             el2_3 = g.Sum(x => x.T22) / (g.Count() * 1),
             el2_4 = g.Sum(x => x.T22) / (g.Count() * 1),
             el2_5 = g.Sum(x => x.T22) / (g.Count() * 1)
    ...
         }).First();

Console.WriteLine(c.el2);
Console.WriteLine(c.el2_1);
Console.WriteLine(c.el2_2);
Console.WriteLine(c.el2_3);
Console.WriteLine(c.el2_5);

Здесь не стал показывать, как я вставляю полученные значения в Excel, но это делается примерно так же, как я вывожу эти данные в консоль. То есть приходится запускать функцию WriteLine отдельно для каждой переменной. И таких переменных много. Хотелось бы сделать это как-то в цикле (к примеру, с foreach). Как это сделать? 
Пытался найти способ загнать получаемые значения в List<double>, а не в отдельные переменные, но не получилось. К сожалению, не обладаю хорошими знаниями по LINQ.
A: Вы можете записать значения свойств вашего анонимного типа в список с помощью reflection, вот так:
var report = (from o in context.table
              group o by 1 into g
              select new
                    {
                        el2   = g.Sum(x => x.T3 + x.T22) / (g.Count() * 2),
                        el2_1 = g.Sum(x => x.T3 + x.T22) / (g.Count() * 1),
                        el2_2 = g.Sum(x => x.T22) / (g.Count() * 1),
                        el2_3 = g.Sum(x => x.T22) / (g.Count() * 1),
                        el2_4 = g.Sum(x => x.T22) / (g.Count() * 1),
                        el2_5 = g.Sum(x => x.T22) / (g.Count() * 1)                
                    }).First();

var reportAsList = report
    .GetType()                                      // получаем тип
    .GetProperties()                                // получаем свойства типа
    .Select(prop => (double)prop.GetValue(report)); // получаем значения свойств 

// теперь можно перебрать значения в цикле
foreach (var value in reportAsList)
{
    Console.WriteLine(value);
}

Но вообще вам не стоит этого делать. Вы собираетесь сделать этот код лучше сократив его. Но ясность кода важнее его краткости. То что вы выводите в Excel, потом читает пользователь и он скорее всего видит перед собой таблицу-отчет, в которой в первом столбце указано название параметра, а во втором его значение. Если это какие-то технические параметры, которые так и называются el2, el2_1 и так далее, то с вашим кодом все в порядке, оставьте его как есть. Но если у параметров есть длинные осмысленные названия, вы можете улучшить свой код, сделав его еще длиннее, применив эти названия:
select new
{
    FirstAverage = g.Sum(x => x.T3 + x.T22) / (g.Count() * 2),
    TotalAverage = g.Sum(x => x.T3 + x.T22) / (g.Count() * 1),
    AnotherFullName = g.Sum(x => x.T22) / (g.Count() * 1),
}).First();

// и прямо так выводите
Console.WriteLine(c.FirstAverage);
Console.WriteLine(c.TotalAverage);
Console.WriteLine(c.AnotherFullName);

Ваш код станет более многословным, но он также станет более понятным. Ваш анонимный класс будет иметь свойства, названые в терминах пользователя, то есть он будет выражать предметную область. Если вам надо будет в будущем что-то сделать с TotalAverage (изменить формулу расчета, вообще перестать расчитывать), вы легко найдете где этот параметр расчитывается и где выводится. 
А если он будет иметь бессмысленное название el2_1 (повторюсь, если это имя не является реальным названием рассчитываемого коэффициента) и параметры будут выводиться циклом, как вы будете делать правку? считать в уме строчки кода, в поисках строчки, где считается то, что вам требуется? Такой краткий код будет сложнее сопровождать, в нем проще будет сделать ошибку, например спутать соседние строчки в итоговом отчете.

A: А если так? Должно работать, если я правильно помню C#
var c = (from o in context.table
         group o by 1 into g
         select new double[]
         {
             g.Sum(x => x.T3 + x.T22) / (g.Count() * 2),
              g.Sum(x => x.T3 + x.T22) / (g.Count() * 1),
              g.Sum(x => x.T22) / (g.Count() * 1),
              g.Sum(x => x.T22) / (g.Count() * 1),
              g.Sum(x => x.T22) / (g.Count() * 1),
              g.Sum(x => x.T22) / (g.Count() * 1)
    ...
         }).First();

user
The text includes 53 "u"s in total.
assistant