public ResultSet Search(IQuery query) { EnsureConnected(); var yazQuery = Yaz.ZOOM_query_create(); ResultSet resultSet; try { // branching out to right YAZ-C call if (query is CQLQuery) { Yaz.ZOOM_query_cql(yazQuery, query.QueryString); } else if (query is PrefixQuery) { Yaz.ZOOM_query_prefix(yazQuery, query.QueryString); } else { throw new NotImplementedException(); } var yazResultSet = Yaz.ZOOM_connection_search(ZConnection, yazQuery); Yaz.ZOOM_resultset_option_set(yazResultSet, "elementSetName", "F"); // error checking C-style var errorCode = Yaz.ZOOM_connection_errcode(ZConnection); if (errorCode != Yaz.ZoomErrorNone) { Yaz.ZOOM_resultset_destroy(yazResultSet); } CheckErrorCodeAndThrow(errorCode); resultSet = new ResultSet(yazResultSet, this); } finally { Yaz.ZOOM_query_destroy(yazQuery); } return(resultSet); }