タイトルが問題をうまく説明しているかわからないので、ここにコードを示します。グリッドをバインドする匿名オブジェクトを返したいです。そのグリッドで、ユーザー名をフルネームに変更したいのですが、フルネームがユーザー名と一致する場合に限ります。以下のクエリでは、CreatedUsername が userModels に存在する場合に CreatedFullname を取得します。存在しない場合、レコードはまったく取得されません。私が望んでいるのは、レコードを取得することです。userModels で利用できる場合は UserFullname を表示し、そうでない場合は x.CreatedUsername を返したいと考えています。
var inf = (from ev in db.Events
where (ev.StartDate >= beginDate && ev.StartDate <= endDate)
orderby ev.StartDate descending
select new
{
EventID = ev.EventID,
EventTitle = ev.Title,
EventDate = ev.StartDate,
StudentCount = ev.EventStudents.Count(),
CreatedUsername = ev.CreatedUsername
}).AsEnumerable().Select(x => new {EventID = x.EventID,
EventTitle = x.EventTitle,
EventDate = x.EventDate,
StudentCount = x.StudentCount,
CreatedUsername = x.CreatedUsername,
CreatedFullname =
userModels.Where(u => u.Username == x.CreatedUsername).FirstOrDefault().UserFullName
});
userModels は、Username、UserFullname、Department などを持つカスタム オブジェクトです。これは、beginDate と endDate に基づいて、ページロード時に ActiveDirectory から収集されました。