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++; } }
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++; } }