Если вы ищете только один Id один раз, более эффективного способа не существует.
Если вы ищете Id несколько раз, вы можете создать HashSet:
var activityIdsQuery = from a in ActivityList
select a.Id;
HashSet<Guid> activityIds = new HashSet<Guid>(activityIdsQuery);
//Use the hashset
activityIds.Contains(id);
Если вам нужно найти экземпляр действия, вы можете создать словарь (работает, только если идентификатор уникален):
Dictionary<Guid, Activity> activities = ActivityList.ToDictionary(a => a.Id);
Другое решение, использующее Linq с Where / FirstOrDefault / Any на Id, больше не будетэффективнее твоего.