【发布时间】:2015-06-22 23:49:08
【问题描述】:
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?
【问题讨论】:
-
你选择匿名类型再见
.Select(g => new你不能这样返回,搜索returning anonymous types -
至少有一个错误... 从
x.GroupBy开始,您不会将结果保存在任何地方...GroupBy将被丢弃。 -
@Habib 从技术上讲,他可以返回
IQueryable<object>,但 99% 的情况下它是无用的(IQueryable<>是协变的) -
嗨,DepartmentBreakdownReport 确实包含我希望设置的所有字段。但是我需要对我的一些结果进行分组和排序。我需要知道如何返回一组包含此排序数据的结果
-
DepartmentBreakdownReport看起来像是一个框架生成的实体,我不认为它可以用于Select的项目中