不能隐式转换类型'System.Linq.IQueryable'& #
本文关键字:IQueryable AnonymousType#6 Linq System 类型 不能 转换 | 更新日期: 2023-09-27 18:18:31
你好,我有一个这样的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
}
),
};
问题是,我只想为HK2
选择一条记录,并在子查询中分配给Mandays,但下面有一个错误:
不能隐式转换类型"来。可查询'到'decimal'
解决方案是什么?谢谢你
不返回匿名类 (new {...}
)
select new
{
Mandays = g.FirstOrDefault().ManDays <-- this is decimal type
}
返回您想要的Decimal
:
select g.FirstOrDefault().ManDays;
您应该在末尾添加另一个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
};