Emp クラスを作成しました
class Emp { public Emp() { } public Emp(Int64 empId, string empName, double empSalary,int empDeptId) { this.EmpID = empId; this.EmpName = empName; this.EmpSalary = empSalary; this.EmpDeptId = empDeptId; } public Int64 EmpID { get; set; } public string EmpName { get; set; } public double EmpSalary { get; set; } public Int32 EmpDeptId { get; set; } }
Group byコマンドをEmpListに適用するだけで、returnステートメントでランタイム例外が発生しました
ConsoleApplication5.exe で、タイプ 'System.InvalidCastException' の未処理の例外が発生しました
追加情報:
タイプ 'WhereSelectEnumerableIterator
2[System.Linq.IGrouping
2[System.Int32,ConsoleApplication5.Emp],<>f__AnonymousType03[System.Int32,System.Double,System.Double]]' to type 'System.Collections.Generic.IEnumerable
1[ConsoleApplication5.EmpGroup]' のオブジェクトをキャストできません。
私が書いたコードも共有します。
public IEnumerable<EmpGroup> GroupByDeptId()
{
var numberGroups =from result in empList
group result by result.EmpDeptId into groupingData
select new
{
EmpDeptId = groupingData.Key,
SalarySum = groupingData.Sum(p => p.EmpSalary),
AverageSalary = groupingData.Average(p => p.EmpSalary)
};
return (IEnumerable<EmpGroup>)numberGroups;
}
`3. また、グループ化データを処理する EmpGroup のクラスも作成しました。
class EmpGroup
{
public Int32 EmpDeptId { get; set; }
public double SalarySum { get; set; }
public double AverageSalary { get; set; }
}