C# 无法隐式转换类型';系统Linq.IQueryable<;匿名类型#6>';至';十进制';

C# 无法隐式转换类型';系统Linq.IQueryable<;匿名类型#6>';至';十进制';,c#,linq,C#,Linq,你好,我有一个linq查询,如下所示: var data = from d in db.DailyBonus where d.Date>= startDate1 && d.Date<=endDate1 group d by new { Em = d.Employee.Id } into g select new BasisViewModel

你好,我有一个linq查询,如下所示:

var data = from d in db.DailyBonus
                   where d.Date>= startDate1 && d.Date<=endDate1
                   group d by new { Em = d.Employee.Id } into g
                   select new BasisViewModel
                   {
                       EmployeeId = g.Key.Em,
                       EmployeeNumber = g.FirstOrDefault().Employee.EmployeeNumber,
                       FullName = g.FirstOrDefault().Employee.FullName,
                       HK1 = (decimal)g.FirstOrDefault().ManDays,
                       Basis1 = (decimal)g.FirstOrDefault().BonusBase,
                       HK2 = (
                              (from d in db.DailyBonus 
                              where d.Date>= startDate2 && d.Date<=endDate2
                              group d by new { Em = d.Employee.Id } into g2
                              select new 
                              {
                                 Mandays =  g.FirstOrDefault().ManDays <-- this is decimal type
                              }
                             ),
                   };
var data=来自d,单位为db.DailyBonus
其中d.Date>=startDate1&&d.Date=startDate2&&d.Date而不是返回匿名类(
new{…}

而不是返回匿名类(
new{…}


最后应添加另一个
FirstOrDefault()
,并使用简单值而不是匿名类型:

var data = from d in db.DailyBonus
                       where d.Date>= startDate1 && d.Date<=endDate1
                       group d by new { Em = d.Employee.Id } into g
                       select new BasisViewModel
                       {
                           EmployeeId = g.Key.Em,
                           EmployeeNumber = g.FirstOrDefault().Employee.EmployeeNumber,
                           FullName = g.FirstOrDefault().Employee.FullName,
                           HK1 = (decimal)g.FirstOrDefault().ManDays,
                           Basis1 = (decimal)g.FirstOrDefault().BonusBase,
                           HK2 = (
                                  (from d in db.DailyBonus 
                                  where d.Date>= startDate2 && d.Date<=endDate2
                                  group d by new { Em = d.Employee.Id } into g2
                                  select g.FirstOrDefault().ManDays <-- this is simple value now

                                 ).FirstOrDefault(),<--this is another first or default 
                       };
var data=来自d,单位为db.DailyBonus

其中d.Date>=startDate1&&d.Date=startDate2&&d.Date您应该在最后添加另一个
FirstOrDefault()
,并使用简单值而不是匿名类型:

var data = from d in db.DailyBonus
                       where d.Date>= startDate1 && d.Date<=endDate1
                       group d by new { Em = d.Employee.Id } into g
                       select new BasisViewModel
                       {
                           EmployeeId = g.Key.Em,
                           EmployeeNumber = g.FirstOrDefault().Employee.EmployeeNumber,
                           FullName = g.FirstOrDefault().Employee.FullName,
                           HK1 = (decimal)g.FirstOrDefault().ManDays,
                           Basis1 = (decimal)g.FirstOrDefault().BonusBase,
                           HK2 = (
                                  (from d in db.DailyBonus 
                                  where d.Date>= startDate2 && d.Date<=endDate2
                                  group d by new { Em = d.Employee.Id } into g2
                                  select g.FirstOrDefault().ManDays <-- this is simple value now

                                 ).FirstOrDefault(),<--this is another first or default 
                       };
var data=来自d,单位为db.DailyBonus

其中d.Date>=startDate1&&d.Date=startDate2&&d.Date HK2的架构是什么?您需要确保
g.FirstOrDefault()
不会为空。如果可以-那么有一天你会得到
NullReferenceException
HK2的模式是什么?你需要确保
g.FirstOrDefault()
不会为空。如果可以-那么有一天你会得到
NullReferenceException
1:)假设HK2是十进制类型,那么它很短很简单,不是复杂类型现在错误更改为
无法将db.DailyBonus中的d中的类型“System.Linq.IQueryable”隐式转换为“decimal”
,其中d.Date>=startDate2&&d。Date@Mamen:看来,
HK2
只是一个
Decimal
,因此,您必须从整个查询中提取一项;i、 e.
HK2=(…).FirstOrDefault()简短且简单假设HK2是十进制类型,而不是复杂类型现在错误更改为
无法将类型“System.Linq.IQueryable”隐式转换为“decimal”
从db.DailyBonus中的d转换为d,其中d.Date>=startDate2&&d。Date@Mamen字体看起来,
HK2
只是一个
Decimal
,因此您必须从整个查询中提取一项;i、 e.
HK2=(…).FirstOrDefault()
var data = from d in db.DailyBonus
                       where d.Date>= startDate1 && d.Date<=endDate1
                       group d by new { Em = d.Employee.Id } into g
                       select new BasisViewModel
                       {
                           EmployeeId = g.Key.Em,
                           EmployeeNumber = g.FirstOrDefault().Employee.EmployeeNumber,
                           FullName = g.FirstOrDefault().Employee.FullName,
                           HK1 = (decimal)g.FirstOrDefault().ManDays,
                           Basis1 = (decimal)g.FirstOrDefault().BonusBase,
                           HK2 = (
                                  (from d in db.DailyBonus 
                                  where d.Date>= startDate2 && d.Date<=endDate2
                                  group d by new { Em = d.Employee.Id } into g2
                                  select g.FirstOrDefault().ManDays <-- this is simple value now

                                 ).FirstOrDefault(),<--this is another first or default 
                       };