Exemplo n.º 1
0
 //Добавляет все элементы из другого словаря, replace - заменять если ключи совпадают
 public void AddDic(DicS <T> dicI2, bool replace = true)
 {
     foreach (var d in dicI2.Dic)
     {
         Add(d.Key, d.Value, replace);
     }
 }
Exemplo n.º 2
0
        //Переводит строку со свойствами в словарь DicS
        public static DicS <string> ToPropertyDicS(this string str, string separator = ";")
        {
            var res = new DicS <string>();

            try
            {
                if (!str.IsEmpty())
                {
                    string[] st = str.Split(new[] { separator }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var s in st)
                    {
                        int p = s.IndexOf("=");
                        //res.Add(s.Substring(0, p), s.Substring(p + 1));
                        string key = "";
                        for (int i = 0; i < p; i++)
                        {
                            key += s[i];
                        }
                        string val = "";
                        for (int i = p + 1; i < s.Length; i++)
                        {
                            val += s[i];
                        }
                        res.Add(key, val);
                    }
                }
            }
            catch { }
            return(res);
        }
Exemplo n.º 3
0
 //Добавляет все элементы из другого словаря, replace - заменять если ключи совпадают
 public DicS <T> AddDic(DicS <T> dicI2, bool replace = true)
 {
     foreach (var d in dicI2.Dic)
     {
         Add(d.Key, d.Value, replace);
     }
     return(this);
 }
Exemplo n.º 4
0
        public static bool GetBool(this DicS <string> dic, string key)
        {
            if (dic == null || !dic.ContainsKey(key))
            {
                return(false);
            }
            string s = dic[key].ToUpper();

            return(s == "TRUE" || s == "ДА");
        }
Exemplo n.º 5
0
        public static int GetInt(this DicS <string> dic, string key, int defval = 0)
        {
            int res;

            if (dic == null || !dic.ContainsKey(key) || !int.TryParse(dic[key], out res))
            {
                return(defval);
            }
            return(res);
        }
Exemplo n.º 6
0
 //Сохранение объектов из словаря в таблицу
 //Старые записи удаляются, только если их нет в словаре, иначе просто обновляются
 public static void SaveDicToTable <T>(string dbFile,             //dbFile - файл базы данных
                                       DicS <T> dic,              //Словарь
                                       string tabl,               //Имя таблицы
                                       string keyField  = "Code", //keyField - ключевое поле
                                       string keyField2 = "",     //если ключ по двум полям, то второе ключевое поле
                                       string delField  = "Del")  //delField - поле отметки для удаления,
     where T : ISaveToRecDao
 {
     using (var db = new DaoDb(dbFile))
         db.SaveDicToTable(dic, tabl, keyField, keyField2, delField);
 }
Exemplo n.º 7
0
        //То же самое, но база данных не задается
        public void SaveDicToTable <T>(DicS <T> dic, string tabl, string keyField = "Code", string keyField2 = "", string delField = "Del") where T : ISaveToRecDao
        {
            var old = new SetS();
            var add = new SetS();

            using (var rec = new RecDao(this, tabl, RecordsetTypeEnum.dbOpenTable))
                while (rec.Read())
                {
                    var code = rec.GetString(keyField);
                    if (!keyField2.IsEmpty())
                    {
                        code += "." + rec.GetString(keyField2);
                    }
                    if (dic.ContainsKey(code))
                    {
                        old.Add(code);
                    }
                    else
                    {
                        rec.Put(delField, true);
                    }
                }
            Execute("DELETE * FROM " + tabl + " WHERE " + delField + "=True");

            foreach (var ap in dic.Keys)
            {
                if (!old.Contains(ap))
                {
                    add.Add(ap);
                }
            }
            using (var rec = new RecDao(this, tabl, RecordsetTypeEnum.dbOpenTable))
            {
                while (rec.Read())
                {
                    dic[rec.GetString(keyField) + (keyField2.IsEmpty() ? "" : ("." + rec.GetString(keyField2)))].ToRecordset(rec, false);
                }
                foreach (var p in add.Keys)
                {
                    dic[p].ToRecordset(rec, true);
                }
            }
        }
Exemplo n.º 8
0
        //Переводит строку со свойствами в словарь DicS
        public static DicS <string> ToPropertyDicS(this string str, string separator = ";")
        {
            var res = new DicS <string>();

            try
            {
                if (!str.IsEmpty())
                {
                    string[] st = str.Split(new[] { separator }, StringSplitOptions.RemoveEmptyEntries);
                    foreach (var s in st)
                    {
                        int p = s.IndexOf("=", StringComparison.Ordinal);
                        res.Add(s.Substring(0, p), s.Substring(p + 1));
                    }
                }
            }
            catch { }
            return(res);
        }
Exemplo n.º 9
0
 //Сохранение объектов из словаря dic в таблицу tabl, keyField - ключевое поле, если ключ по двум полям, то keyField2 - второе ключевое поле
 //delField - поле отметки для удаления, dbFile - файл базы данных
 //Старые записи удаляются, только если их нет в словаре, иначе просто обновляются
 public static void SaveDicToTable <T>(string dbFile, DicS <T> dic, string tabl, string keyField = "Code", string keyField2 = "", string delField = "Del") where T : ISaveToRecDao
 {
     using (var db = new DaoDb(dbFile))
         db.SaveDicToTable(dic, tabl, keyField, keyField2, delField);
 }
Exemplo n.º 10
0
 public static string ToPropertyString(this DicS <string> dic, string separator = ";")
 {
     return(dic.Dic.ToPropertyString(separator));
 }