Подтвердить что ты не робот

Недопустимый декларатор участника анонимного типа

У меня есть проблема со следующим кодом, который должен работать в соответствии с этим сообщением форума MSDN.

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace LINQTest
{
    class Program
    {
        class Schedule
        {
            public int empid { get; set; }
            public int hours { get; set; }
            public DateTime date { get; set; }
            public DateTime weekending { get; set; }
        }

        static void Main(string[] args)
        {
            List<Schedule> Schedules = new List<Schedule>();

            var bla = from s in Schedules
                      group s by new { s.empid, s.weekending} into g
                      select new { g.Key.empid, g.Key.weekending, g.Sum(s=>s.hours)};
        }
    }
}

Я получаю ошибку с функцией sum: Недопустимый декларатор участника анонимного типа. Члены анонимного типа должны быть объявлены с назначением членов, простым именем или доступом к члену.

Что не так?

4b9b3361

Ответ 1

Вы должны указать свойство, используемое для хранения результата метода Sum:

select new { g.Key.empid, g.Key.weekending, Sum = g.Sum(s=>s.hours)};

Компилятор не может вывести имя свойства, когда вы назначаете значение из выражения:

Анонимные типы (Руководство по программированию на С#)

Вы должны указать имя для свойства, которое инициализируется выражением (...)