У меня следующий запрос Linq-to-SQL. В строке № 5 я пытаюсь получить количество записей из моей таблицы «Пакеты», где выполнены условия, перечисленные в моем утверждении «Где». Я думаю, что все правильно в этом коде, за исключением строки № 5. Что я сделал не так?
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»
РЕДАКТИРОВАТЬ Вот пример, чтобы сопровождать мой вопрос:
Таблица подписки:
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 исключает этого пользователя