private void foo1()
        {
            RootObject testObject = new RootObject()
            {
                RootIntElement    = 1,
                RootStringElement = "test",
                Childs            = new List <ChildObject>()
            };

            testObject.Childs.Add(new ChildObject()
            {
                ChildIntElement = 11, ChildStringElement = "Child1"
            });
            testObject.Childs.Add(new ChildObject()
            {
                ChildIntElement = 12, ChildStringElement = "Child2"
            });
            testObject.Childs.Add(new ChildObject()
            {
                ChildIntElement = 13, ChildStringElement = "Child3"
            });
            testObject.Childs.Add(new ChildObject()
            {
                ChildIntElement = 14, ChildStringElement = "Child4"
            });
            testObject.Childs.Add(new ChildObject()
            {
                ChildIntElement = 15, ChildStringElement = "Child5"
            });

            List <ChildObject> targets = new List <ChildObject>();

            targets.Add(new ChildObject()
            {
                ChildIntElement = 11, ChildStringElement = "TargetChild1"
            });
            targets.Add(new ChildObject()
            {
                ChildIntElement = 11, ChildStringElement = "TargetChild2"
            });
            targets.Add(new ChildObject()
            {
                ChildIntElement = 11, ChildStringElement = "TargetChild3"
            });
            targets.Add(new ChildObject()
            {
                ChildIntElement = 14, ChildStringElement = "TargetChild4"
            });
            targets.Add(new ChildObject()
            {
                ChildIntElement = 16, ChildStringElement = "TargetChild5"
            });

            testObject.Childs.ForEach(l =>
            {
                l.Childs = targets.Where(p => p.ChildIntElement.ToString() == l.ChildIntElement.ToString()).ToList();
            });

            var result1   = targets.Find(u => u.ChildIntElement == 10);
            var result2   = targets.First(u => u.ChildIntElement == 110); //throw exception!!
            var result3   = targets.FirstOrDefault(u => u.ChildIntElement == 10);
            var result4   = targets.FindAll(u => u.ChildIntElement == 11);
            var result5   = targets.Any(u => u.ChildIntElement == 15);
            int pageindex = 10;
            int pagesize  = 2;
            var result6   = targets.Skip((pageindex - 1) * pagesize).Take(pagesize).ToList();
            var result7   = targets.Select(o => o.ChildStringElement).Distinct()
                            .Select((o, i) => string.Format("{0}. {1}", i + 1, o)).ToList();

            ChildObject FirstOrDefaultResult = targets.FirstOrDefault(u => u.ChildIntElement == 24);
        }