用LINQ比较两个对象列表的特定属性

本文关键字:列表 对象 属性 两个 比较 LINQ | 更新日期: 2023-09-27 18:06:30

我有这两个列表(其中SelectListItem是一个bookingid):

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

我需要找到selectedBookings中不属于availableBookings的id。下面的LINQ连接只会让我在availableBookings中的预订id,我不确定如何以另一种方式做到这一点。

!=将不工作,因为我比较字符串。

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

用LINQ比较两个对象列表的特定属性

我需要从selectedbooking中找到不在availablebooking中的id。

这很简单——它是选中预订中的所有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);