I have these two lists (where the Value in a SelectListItem is a bookingid):
List<SelectListItem> selectedbookings;
List<Booking> availableBookings;
I need to find the ids from selectedBookings that are not in availableBookings. The LINQ join below will only get me the bookingids that are in availableBookings, and I'm not sure how to do it the other way around.
!= won't work since I'm comparing strings.
results = (
  from s in selectedbookings
  join a in availableBookings on s.bookingID.ToString() equals a.Value
  select s);
 
  
                     
                        
I need to find the ids from selectedBookings that are not in availableBookings.
That's easy - it's all the IDs in selected bookings except those that are in available bookings:
var ids = selectedBookings.Select(x => x.bookingID.ToString())
                          .Except(availableBookings.Select(x => x.Value));
Or perhaps more readably:
var selectedIds = selectedBookings.Select(x => x.bookingID.ToString());
var availableIds = availableBookings.Select(x => x.Value);
var result = selectedIds.Except(availableIds);
 
                    See more on this question at Stackoverflow