Compare two object lists with LINQ on specific property
c#, join, linq
Solution
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);
Problem
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); ```