ユーザーからの静的データを (正しく) 提供するこの Linq クエリがあります。ここで、ユーザー テーブルの「インクルード」を手動で実行します。私が探しているのは、このクエリの結果が実際に親 User オブジェクトのコレクションになることです。
現在使用している単一のユーザー名ではなく複数のユーザー名 (s.User.Name) を選択すると、データで満たされた統計 (User.Statistics) コレクションで検索したユーザー名と同じ数のユーザー オブジェクトのみが返されます。以下のクエリによって返されるように。
var statistics = ((
from s in db.Statistics
where s.User.ScreenName == screenName &&
s.CreateDate > EntityFunctions.AddDays(DateTime.Now, days)
group s by EntityFunctions.TruncateTime(s.CreateDate) into dg
let maxDate = dg.Max(x => x.CreateDate)
from s2 in db.Statistics
where s2.User.ScreenName == screenName &&
s2.CreateDate == maxDate
orderby s2.CreateDate
select s2) as ObjectQuery<Statistic>).Include("User").ToList();
更新 18-05-2012 15:41
単に s2.User を返すだけでは機能しません。統計テーブルから返される行と同じ回数だけユーザーが返されるためです。ユーザー オブジェクトを 1 つだけ取得し、その統計コレクション (User.Statistics) に結果を入力したいと考えています。クエリの。