public SoodaObjectListSnapshot(SoodaTransaction tran, SoodaObjectFilter filter, ClassInfo ci)
        {
            this.classInfo = ci;
            List <WeakSoodaObject> al = tran.GetObjectsByClassName(ci.Name);

            if (al != null)
            {
                // al.Clone() is needed because
                // the filter expression may materialize new objects
                // during checking. This way we avoid "collection modified" exception

                List <SoodaObject> clonedArray = new List <SoodaObject>();
                foreach (WeakSoodaObject wr in al)
                {
                    SoodaObject obj = wr.TargetSoodaObject;
                    if (obj != null)
                    {
                        clonedArray.Add(obj);
                    }
                }

                foreach (SoodaObject obj in clonedArray)
                {
                    if (filter(obj))
                    {
                        items.Add(obj);
                    }
                }
                count = items.Count;
            }
        }
 public SoodaObjectListSnapshot(IList list, SoodaObjectFilter filter)
 {
     foreach (SoodaObject o in list)
     {
         if (filter(o))
             AddObjectToSnapshot(o);
     }
 }
 public SoodaObjectListSnapshot(IList list, SoodaObjectFilter filter)
 {
     foreach (SoodaObject o in list)
     {
         if (filter(o))
         {
             AddObjectToSnapshot(o);
         }
     }
 }
예제 #4
0
 public ISoodaObjectList Filter(SoodaObjectFilter filter)
 {
     return(new SoodaObjectListSnapshot(this, filter));
 }
예제 #5
0
 protected ISoodaObjectList Filter2(SoodaObjectFilter filter)
 {
     return(_theList.Filter(filter));
 }
예제 #6
0
 ISoodaObjectList ISoodaObjectList.Filter(SoodaObjectFilter filter)
 {
     return(_theList.Filter(filter));
 }
 public ISoodaObjectList Filter(SoodaObjectFilter filter)
 {
     return new SoodaObjectListSnapshot(this, filter);
 }
        public SoodaObjectListSnapshot(SoodaTransaction tran, SoodaObjectFilter filter, ClassInfo ci)
        {
            this.classInfo = ci;
            List<WeakSoodaObject> al = tran.GetObjectsByClassName(ci.Name);

            if (al != null)
            {
                // al.Clone() is needed because
                // the filter expression may materialize new objects
                // during checking. This way we avoid "collection modified" exception

                List<SoodaObject> clonedArray = new List<SoodaObject>();
                foreach (WeakSoodaObject wr in al)
                {
                    SoodaObject obj = wr.TargetSoodaObject;
                    if (obj != null)
                        clonedArray.Add(obj);
                }

                foreach (SoodaObject obj in clonedArray)
                {
                    if (filter(obj))
                    {
                        items.Add(obj);
                    }
                }
                count = items.Count;
            }
        }