我有以下Linq-to-SQL查询。在第5行我试图从我的Packages表中得到我的Where语句中列出的条件满足的记录数。我认为除了第5行外,这段代码中的所有内容都是正确的。我做错了什么?如何在我的Linq中将这个Count语句修复为Sql代码?
var Overage = from s in db.Subscriptions
join p in db.Packages on s.UserID equals p.UserID
where
s.SubscriptionType != "PayAsYouGo" &&
(s.CancelDate == null || s.CancelDate >= day) &&
s.StartDate <= day && p.DateReceived <= day &&
(p.DateShipped == null || p.DateShipped >= day)
let AverageBoxSize = (p.Height * p.Length * p.Width)/1728
let ActiveBoxCount = p.Count()
select new
{
p,
AverageBoxSize,
ActiveBoxCount,
s.Boxes
};
错误消息是 “未知方法COUNT()Foo.Data.Package的”
EDIT下面是一个例子陪我的问题:
订阅表:
UserID | Boxes
001 5
002 25
003 5
方块是每个用户在其订阅下允许的最大数量
个套餐表
UserID | PackageID | Height | Length | Width
001 00001 10 10 10
001 00002 10 10 10
001 00003 20 10 10
003 00004 10 20 20
003 00005 10 10 10
所需的查询结果
UserID | Boxes | Box Count | Average Box Size
001 5 3 1,333
003 5 2 2,500
用户002不会出现,因为where子句排除用户
是的,你做错了什么?有错误吗? – leppie
什么是错误? –
运行此收益率是什么?它是否产生错误,0,1,...? – Josh