private INakedObjectAdapter Select(INakedObjectAdapter objectRepresentingCollection, object[] selected, bool forceEnumerable)
        {
            IList result = CollectionUtils.CloneCollectionAndPopulate(objectRepresentingCollection.Object, selected);
            INakedObjectAdapter adapter = framework.NakedObjectManager.CreateAdapter(objectRepresentingCollection.Spec.IsQueryable && !forceEnumerable ? (IEnumerable)result.AsQueryable() : result, null, null);
            var currentMemento          = (ICollectionMemento)objectRepresentingCollection.Oid;
            var newMemento = currentMemento.NewSelectionMemento(selected, false);

            adapter.SetATransientOid(newMemento);
            return(adapter);
        }
        public INakedObjectAdapter RecoverCollection()
        {
            INakedObjectAdapter nakedObjectAdapter = Action.Execute(Target, Parameters);

            if (selectedObjects != null)
            {
                IEnumerable <object> selected = nakedObjectAdapter.GetDomainObject <IEnumerable>().Cast <object>().Where(x => selectedObjects.Contains(x));
                IList newResult = CollectionUtils.CloneCollectionAndPopulate(nakedObjectAdapter.Object, selected);
                nakedObjectAdapter = nakedObjectManager.CreateAdapter(newResult, null, null);
            }

            nakedObjectAdapter.SetATransientOid(this);
            return(nakedObjectAdapter);
        }
        public override void Init(INakedObjectAdapter collection, INakedObjectAdapter[] initData)
        {
            IList newCollection = CollectionUtils.CloneCollectionAndPopulate(collection.Object, initData.Select(no => no.Object));

            collection.ReplacePoco(newCollection);
        }