2013-09-17 2 views
37

У меня возникла проблема со следующим кодом, который должен работать, согласно this MSDN Forums post.Недопустимый декларатор участника анонимного типа

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)}; 
     } 
    } 
} 

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

Что случилось?

+1

Как должно быть имя свойства 'g.Sum (s => s.hours)'? – Servy

+1

Укажите имена ваших анонимных типов: –

+0

@retailcoder Только нужно имя. – Servy

ответ

80

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

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

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

Anonymous Types (C# Programming Guide)

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

Смежные вопросы