Ejemplo n.º 1
0
        /// <summary>
        /// Erzeugt eine Abfrage, welche über Linq angesteuert werden kann.
        /// </summary>
        /// <param name="db">Datenbanknummer</param>
        /// <param name="groups">Gruppennummern</param>
        /// <param name="fields">Feldnamen</param>
        /// <returns></returns>
        public QueryProxy <Record> Get(int db, int[] groups, params string[] fields)
        {
            FieldList list = new FieldList();

            foreach (string f in fields)
            {
                list.Add(f);
            }

            return(Get(db, groups, list));
        }
Ejemplo n.º 2
0
        private void ReadMetaData()
        {
            // RDP mit unterschiedlichen Variablentabellen wird aktuell nicht untersützt
            if (data.Count > 0)
            {
                throw new NotSupportedException("Server responds with meta data after sending data commands. Subsequent changes of field lists are not yet supported.");
            }

            MetaDataTypeHelper.TryParse(currentCmd[CommandFields.Responses.DM.MetaDataType], out MetaDataType type);

            // neue nicht untersützte Metadaten ignorieren
            if (type == MetaDataType.Undefined)
            {
                return;
            }

            if (fields == null)
            {
                fields = new FieldList();
            }

            for (int i = 1; i < currentCmd.Fields.Length; i++)
            {
                string value = currentCmd[i];
                // die erste Angabe in den Metadaten ist der Typ und wird hier übersprungen, die Feldliste beginnt aber bei 0
                int fieldIdx = i - 1;

                if (type == MetaDataType.Name && !fields.Contains(value))
                {
                    fields.Add(new Field(value));
                }
                else if (fieldIdx < fields.Count)
                {
                    // Die Metadaten kommen ohne Bezug zu den Feldnamen aber immer in der gleichen Reihenfolge
                    Field f = fields[fieldIdx];
                    f.SetMetaData(type, value);
                }
            }
        }