Недопустимый декларатор участника анонимного типа
У меня есть проблема со следующим кодом, который должен работать в соответствии с этим сообщением форума 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:
Недопустимый декларатор участника анонимного типа. Члены анонимного типа должны быть объявлены с назначением членов, простым именем или доступом к члену.
Что не так?
Ответы
Ответ 1
Вы должны указать свойство, используемое для хранения результата метода Sum
:
select new { g.Key.empid, g.Key.weekending, Sum = g.Sum(s=>s.hours)};
Компилятор не может вывести имя свойства, когда вы назначаете значение из выражения:
Анонимные типы (Руководство по программированию на С#)
Вы должны указать имя для свойства, которое инициализируется выражением (...)