Can I have some help in improving this linq. I'm basically returning speakers from the db but setting HasNew property true if there has been a video by them posted in the past week.
public IQueryable<Speaker> GetSpeakers()
{
var speakers = db.Speakers.OrderBy(x => x.DisplayName);
var newVidsSpeakers = db.Videos.Where(x => x.DatePosted > DateTime.Now.AddDays(-7)).Select(x=> x.Speaker).Distinct();
foreach (var item in newVidsSpeakers)
{
var sp = speakers.SingleOrDefault(x => x.ID == item.ID);
sp.HasNew = true;
}
return speakers;
}
Why are you making the second call anyway? You should just be able to do:
public IQueryable<Speaker> GetSpeakers()
{
var speakers = db.Speakers.OrderBy(x => x.DisplayName);
var newVidsSpeakers = db.Videos.Where(x => x.DatePosted > DateTime.Now.AddDays(-7)).Select(x => x.Speaker).Distinct();
foreach (var speaker in newVidsSpeakers)
{
speaker.HasNew = true;
}
return speakers;
}