/// <summary> /// 判断过滤器对象是否为Null或空对象 /// </summary> /// <param name="filter">过滤器</param> /// <returns></returns> public static bool IsObjectEmpty(IQueryFilter filter) { if (filter == null) { return(true); } if (!FilterHelper.HasNotEmptyElement(filter.GetType().GetProperties().Select(p => p.GetValue(filter)).ToArray())) { return(true); } return(false); }
public bool UsableWith(IQueryFilter filter) { if (_filter == null || filter == null) { return(false); } // Type überprüfen if (_filter.GetType() != filter.GetType()) { return(false); } #region WhereClause if (_filter.WhereClause != filter.WhereClause) { return(false); } #endregion #region Subfields if (_filter.SubFields != "*") { if (filter.SubFields == "*") { return(false); } string[] subFields_o = _filter.SubFields.Split(' '); string[] subFields_n = filter.SubFields.Split(' '); foreach (string fn in subFields_n) { string shortNameN = Field.shortName(fn); bool found = false; foreach (string fo in subFields_o) { if (Field.shortName(fo) == shortNameN) { found = true; break; } } if (!found) { return(false); } } } #endregion #region Geometry Envelope if (_filter is ISpatialFilter && filter is ISpatialFilter) { IGeometry geomN = ((ISpatialFilter)filter).Geometry; IGeometry geomO = ((ISpatialFilter)_filter).Geometry; if (geomN == null || geomO == null) { return(false); } if (((ISpatialFilter)_filter).SpatialRelation == spatialRelation.SpatialRelationMapEnvelopeIntersects && ((ISpatialFilter)filter).SpatialRelation == spatialRelation.SpatialRelationMapEnvelopeIntersects) { return(geomO.Envelope.Contains(geomN.Envelope)); } else { return(SpatialAlgorithms.Algorithm.Contains(geomO, geomN)); } } #endregion return(true); }