在特定属性上比较两个具有LINQ的对象列表

时间:2014-06-04 09:14:20

标签: c# linq join

我有这两个列表(其中 SelectListItem 中的 Value 是预定的):

List<SelectListItem> selectedbookings;
List<Booking> availableBookings;

我需要找到selectedBookings中不属于availableBookings的ID。下面的LINQ加入只会让我获得availableBookings中的预订,我不知道如何以相反的方式进行。

!=因为我正在比较字符串而无效。

results = (
  from s in selectedbookings
  join a in availableBookings on s.bookingID.ToString() equals a.Value
  select s);

1 个答案:

答案 0 :(得分:5)

  

我需要在selectedBookings中找到不在availableBookings中的ID。

这很简单 - 这是所选预订中的所有ID,除了可用预订中的那些:

var ids = selectedBookings.Select(x => x.bookingID.ToString())
                          .Except(availableBookings.Select(x => x.Value));

或许更可读:

var selectedIds = selectedBookings.Select(x => x.bookingID.ToString());
var availableIds = availableBookings.Select(x => x.Value);
var result = selectedIds.Except(availableIds);