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)); }
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>())); }