![](/img/trans.png)
[英]Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>'
[英]Cannot implicitly convert type 'System.Linq.IQueryable<AnonymousType#1>' to 'System.Linq.IQueryable<>'
public IQueryable<DepartmentBreakdownReport> GetDepartmentBreakdownByReviewID(int ClientID, int? ReviewID) {
var x = (from d in camOnlineDb.Details
join h in camOnlineDb.Headers
on new { d.ClientID, d.ClaimID }
equals new { h.ClientID, h.ClaimID }
where h.ClientID == d.ClientID
join sd in camOnlineDb.SuppDepts
on new { a = d.ClientID, b = d.CategoryID ?? 0 }
equals new { a = sd.ClientID, b = sd.CategoryID }
join r in camOnlineDb.Reviews
on new { h.ClientID, h.ReviewID }
equals new { r.ClientID, r.ReviewID }
join rp in camOnlineDb.ReviewPeriods
on new { a = r.ClientID, b = r.ReviewPeriodID ?? 0 }
equals new { a = rp.ClientID, b = rp.ReviewPeriodID }
select new {
d.ClientID,
h.ReviewID,
sd.DepartmentID,
sd.DepartmentName,
d.Amount
});
x.GroupBy(r => new { r.DepartmentID, r.ReviewID, r.ClientID })
.Select(g => new {
ClientID = g.Key.ClientID,
ReviewID = g.Key.ReviewID,
Dept = g.Max(d => d.DepartmentName),
Amount = g.Sum(d => d.Amount)
})
.OrderBy(r => r.Dept)
.Where(r => r.ReviewID == 37);
//.Dump();
return x;
我知道这与返回x有关。 我尝试返回的是asQueryable,但这没有用。 如何获得返回x的声明?
x是一个IQueryable<T>
,其中T
是具有ClientID
, ReviewID
, DepartmentID
, DepartmentName
和Amount
方法的匿名类型。
在某个时候,您需要要么select new DepartmentBreakdownReport(…)
一个select new DepartmentBreakdownReport(…)
,要么select new DepartmentBreakdownReport(…)
一个select new DepartmentBreakdownReport{…}
一个.Select(something => new DepartmentBreakdownReport(…))
或一个.Select(something => new DepartmentBreakdownReport{…})
。 (实际上都是一样的东西。
这将为您提供IQueryable<DepartmentBreakdownReport>
因为它选择的类型将是DepartmentBreakdownReport
。
还要注意,代码中的代码x.GroupBy(r => new { r.DepartmentID, r.ReviewID, r.ClientID })
等实际上什么也没做; 它会创建一个新查询,但此新查询将永远不会被使用甚至无法使用。
我之前的评论的意思是您要创建(并返回) DepartmentBreakdownReport
实例,而不是匿名类型。
return x.Where(r => r.ReviewID == 37)
.GroupBy(r => new { r.DepartmentID, r.ReviewID, r.ClientID })
.Select(g => new DepartmentBreakdownReport
{
ClientID = g.Key.ClientID,
ReviewID = g.Key.ReviewID,
Dept = g.Max(d => d.DepartmentName),
Amount = g.Sum(d => d.Amount)
})
.OrderBy(r => r.Dept);
我将查询重新排序了一下,以符合我的个人喜好,但它应该产生相同的结果。
另外,我不知道您是否必须在其末尾添加一个AsQueryable()
……
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.