I would probably create a set of names from ActiveItemsand then use this:
var activeNames = new HashSet<string>(activeItems.Select(x => x.Name));
var itemsWithActiveNames = items.Where(x => activeNames.Contains(x.Name))
.ToList();
Another option is to use a connection, for example. with query expression:
var query = from activeItem in activeItems
join item in items on activeItem.Name equals item.Name
select item;
, item, ActiveItem . , , :
var query = from item in items
join activeItem in activeItems
on item.Name equals activeItem.Name
into g
where g.Any()
select item;
: O (N * M) - - , O (N + M).