예제 #1
0
        public void JoinDictionariesIntoTuple()
        {
            IEnumerable <IDictionary <string, object> > outer = TestData.GetPeopleDictionary();
            IEnumerable <IDictionary <string, object> > inner = TestData.GetFamiliesDictionary();

            var answer = from p in outer
                         join f in inner on p["lastName"] equals f["familyName"]
                         select new Tuple <string, string, string>(p["name"].ToString(), f["familyName"].ToString(), f["city"].ToString());


            var result = outer.Query <IDictionary <string, object>, IDictionary <string, object>, Tuple <string, string, string> >("SELECT Name, lastName, city AS Location FROM this INNER JOIN that ON this.lastName = that.familyName", inner);

            Assert.IsTrue(result.Any());
            Assert.IsTrue(answer.Any());
            Assert.IsTrue(result.SequenceEqual(answer));
        }
예제 #2
0
        public void JoinDictionaries()
        {
            IEnumerable <IDictionary <string, object> > outer = TestData.GetPeopleDictionary();
            IEnumerable <IDictionary <string, object> > inner = TestData.GetFamiliesDictionary();

            var answer = from p in outer
                         join f in inner on p["lastName"] equals f["familyName"]
                         select new Dictionary <string, object>(StringComparer.OrdinalIgnoreCase)
            {
                { "Name", p["name"] },
                { "lastName", p["lastName"] },
                { "city", f["city"] }
            };

            var result = outer.Query <IDictionary <string, object>, IDictionary <string, object>, IDictionary <string, object> >("SELECT Name, lastName, city FROM this INNER JOIN that ON this.lastName = that.familyName", inner);

            Assert.IsTrue(result.Any());
            Assert.IsTrue(answer.Any());
            Assert.IsTrue(result.SequenceEqual(answer, new DictionaryComparer <string, object>()));
        }