LINQ で最も高い日付のレコードのみを選択する方法など、これに関するいくつかの項目を読みましたが、少し複雑なケースに適用する方法がわかりません。
すべてを取得しようとしてAdjusterProfileStatusItem
いますが、最新のもののみを選択していますs.statusDate
。現在、クエリはすべてのレコードのすべての日付を返すだけです。一方、すべてのレコードの最新の日付が必要です。
(from u in db.Users
join a in db.Adjusters
on u.id equals a.userID
join s in db.AdminAdjusterStatus
on a.id equals s.adjusterID
where u.userType.ToLower() == "adjuster"
&& s.status.ToLower() == "approved"
&& s.statusDate.Max() // causes syntax error...
select new AdjusterProfileStatusItem
{
user = u,
adjuster = a
})
編集:
これも試してみましたが、構文エラーが発生しました...
(from u in db.Users
join a in db.Adjusters
on u.id equals a.userID
join s in db.AdminAdjusterStatus
on a.id equals s.adjusterID
where u.userType.ToLower() == "adjuster"
&& s.status.ToLower() == "approved"
group new { u, a, s } by s.adjusterID into x
select new AdjusterProfileStatusItem
{
user = u, // u does not exist in context
adjuster = a, // a does not exist in context
status = x.Max(y => y.statusDate) // anonymous type does not contain definition for 'statusDate'
})