private RelationshipClass MakeJoin(RelationshipClass relationshipClass, Table leftTable, Table rightTable)
        {
            var virtualRelationshipClassDescription = new VirtualRelationshipClassDescription(_leftField, _rightField,
                                                                                              SelectedCardinality.RelationshipCardinality);

            relationshipClass = leftTable.RelateTo(rightTable, virtualRelationshipClassDescription);
            var joinDescription = new JoinDescription(relationshipClass)
            {
                JoinDirection = JoinDirection.Forward
            };

            joinDescription.JoinType = IsLeftOuterJoin ? JoinType.LeftOuterJoin : JoinType.InnerJoin;
            if (LeftFields.Count > 1)
            {
                joinDescription.TargetFields = LeftFields.Select(item => item.Field).ToList();
            }
            var join        = new Join(joinDescription);
            var joinedTable = @join.GetJoinedTable();

            if (joinedTable is FeatureClass)
            {
                LayerFactory.Instance.CreateFeatureLayer(joinedTable as FeatureClass, MapView.Active.Map, 0, LayerName);
            }
            return(relationshipClass);
        }
コード例 #2
0
 public bool IsAligned()
 {
     return(LeftEntity != null && RightEntity != null && LeftFields.Any() && LeftFields.Count() == RightFields.Count());
 }