64

この 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 関数でエラーが発生します: 無効な匿名型メンバー宣言子です。匿名型のメンバーは、メンバーの割り当て、単純な名前、またはメンバー アクセスを使用して宣言する必要があります。

どうしたの?

4

1 に答える 1

140

Sumメソッドの結果を格納するために使用するプロパティに名前を付ける必要があります。

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

式から値を割り当てている場合、コンパイラはプロパティ名を推測できません。

匿名型 (C# プログラミング ガイド)

式で初期化されているプロパティの名前を指定する必要があります (...)

于 2013-09-17T18:11:10.067 に答える