Ejemplo n.º 1
0
        public void ExpandoAsSourceWithoutDictionaryCast()
        {
            var customers = new List <dynamic>();

            for (int i = 0; i < 10; ++i)
            {
                string iter = i.ToString();
                for (int j = 0; j < 3; ++j)
                {
                    dynamic customer = new ExpandoObject();
                    customer.City        = "Chicago" + iter;
                    customer.Id          = i;
                    customer.Name        = "Name" + iter;
                    customer.CompanyName = "Company" + iter + j.ToString();

                    customers.Add(customer);
                }
            }

            // all this casting is just to get the answer and result into the same storage types for comparison
            var result = customers.Query <dynamic, dynamic>("SELECT City, Name FROM this");
            var answer = customers.Select <dynamic, dynamic>(d => { dynamic o = new ExpandoObject(); o.City = d.City; o.Name = d.Name; return(o); });

            Assert.IsTrue(result.Any());
            Assert.AreEqual(answer.Count(), result.Count());

            // can't fiqure out how to get SequenceEqual to compile - brute force
            var comparer = new ExpandoComparer();
            int x        = 0;

            foreach (var a in answer)
            {
                var r = result.Skip(x).First();
                Assert.IsTrue(comparer.Equals(a, r));
                x++;
            }
        }
Ejemplo n.º 2
0
        public void ExpandoAsSourceWithoutDictionaryCast()
        {
            var customers = new List<dynamic>();
            for (int i = 0; i < 10; ++i)
            {
                string iter = i.ToString();
                for (int j = 0; j < 3; ++j)
                {
                    dynamic customer = new ExpandoObject();
                    customer.City = "Chicago" + iter;
                    customer.Id = i;
                    customer.Name = "Name" + iter;
                    customer.CompanyName = "Company" + iter + j.ToString();

                    customers.Add(customer);
                }
            }

            // all this casting is just to get the answer and result into the same storage types for comparison
            var result = customers.Query<dynamic, dynamic>("SELECT City, Name FROM this");
            var answer = customers.Select<dynamic, dynamic>(d => { dynamic o = new ExpandoObject(); o.City = d.City; o.Name = d.Name; return o; });

            Assert.IsTrue(result.Any());
            Assert.AreEqual(answer.Count(), result.Count());

            // can't fiqure out how to get SequenceEqual to compile - brute force
            var comparer = new ExpandoComparer();
            int x = 0;
            foreach (var a in answer)
            {
                var r = result.Skip(x).First();
                Assert.IsTrue(comparer.Equals(a, r));
                x++;
            }
        }