LINQ "Where" condition -> change value of property

Viewed 11092

I have a list of meetings, inside which I have another list of attendees.

The model is similar to this:

public class Meeting
{
    public string Id { get; set; }
    public string Title { get; set; }
    public List<User> Users { get; set; }
    public DateTime StartTime { get; set; }
    public DateTime EndTime { get; set; }
}

I have list of Meetings: List<Meeting> meetings = GetMeetings();

Now I want to mask the Title of the meetings where one of the users is bot@domain.com. I can achieve this in multiple LINQ queries but I am looking for one optimized LINQ query.

Here's what I tried:

var maskedMeetings = meetings.Where(x = x.Users.Any(a => a.Email.Equals("bot@domain.com"))); 
meetings = appointments.Except(maskedMeetings).ToList();
maskedMeetings = maskedMeetings.Select(x => { x.Title = "Bot"; return x; }).ToList();
meetings = meetings.Concat(maskedMeetings).ToList();

Can anyone help me find an optimized way of writing this query?

1 Answers
Related