Joining on multiple keys C# with Example
PropertyInfo[] stringProps = typeof (string).GetProperties();//string properties PropertyInfo[] builderProps = typeof(StringBuilder).GetProperties();//stringbuilder properties var query = from s in stringProps join b in builderProps on new { s.Name, s.PropertyType } equals new { b.Name, b.PropertyType } select new { s.Name, s.PropertyType, StringToken = s.MetadataToken, StringBuilderToken = b.MetadataToken }; Note that anonymous types in above join must contain same properties since objects are considered equal only if all their properties are equal. Otherwise query won't compile.