コード例 #1
0
        public static DataBase.Coefficient GetCoefficient(long idOfIndex)
        {
            DbConnection.Initialise(StringConnection);
            var k = new DataBase.Coefficient();

            using (var adapter = TableAdapter <Info> .Open())
                k.Info = adapter.Select().Where(tbl => tbl.ID_KIndex == Convert.ToInt64(idOfIndex)).ToList();

            using (var adapter = TableAdapter <KIndex> .Open())
            {
                var row = adapter.Select().First(tbl => tbl.ID == Convert.ToInt64(idOfIndex));
                k.Name             = row.Name;
                k.ParamName        = row.ParamName;
                k.ParamDiscription = row.ParamDiscription;
                k.Discription      = row.Discription;
                k.ID_KIndex        = idOfIndex;
            }

            return(k);
        }
コード例 #2
0
        public static double GetCoefficientValue(DataBase.Coefficient coeff)
        {
            DbConnection.Initialise(StringConnection);

            Int64  infoId = 0;
            double value  = 0;

            List <Coefficient> rows;

            Double.TryParse(coeff.SelectedParamValue, out value);

            if (coeff.Info.Count != 0)
            {
                using (var adapter = TableAdapter <Info> .Open())
                    infoId = adapter.Select().First(tbl => (tbl.ID_KIndex == coeff.ID_KIndex) && (tbl.Discription == coeff.SelectedParamValue)).ID;
            }

            Node item = coeff.ID;

            using (var adapter = TableAdapter <Tables.Coefficient> .Open())
                rows = adapter.Select().Where(tbl => (tbl.ID_KIndex == coeff.ID_KIndex) && ((tbl.ID_Type == item.ID_Type) || (
                                                                                                (tbl.ID_KIndex == coeff.ID_KIndex) && (tbl.ID_Type == null) && (tbl.ID_Scroll == item.ID_Scroll)) || (
                                                                                                (tbl.ID_KIndex == coeff.ID_KIndex) && (tbl.ID_Type == null) && (tbl.ID_Scroll == null) && (tbl.ID_Class == item.ID_Class))
                                                                                            )).ToList();

            if (infoId != 0)
            {
                foreach (var row in rows)
                {
                    if (row.Info == infoId)
                    {
                        return(row.Value);
                    }
                }
            }

            if (rows.FirstOrDefault(r => r.MathModel != null) != null)
            {
                Kmodel m;
                using (var adapter = TableAdapter <Kmodel> .Open())
                    m = adapter.Select().FirstOrDefault(tbl => (tbl.ID_KIndex == coeff.ID_KIndex) && ((tbl.ID_Type == item.ID_Type) || (
                                                                                                          (tbl.ID_KIndex == coeff.ID_KIndex) && (tbl.ID_Type == null) && (tbl.ID_Scroll == item.ID_Scroll)) || (
                                                                                                          (tbl.ID_KIndex == coeff.ID_KIndex) && (tbl.ID_Type == null) && (tbl.ID_Scroll == null) && (tbl.ID_Class == item.ID_Class))
                                                                                                      ));

                if (m == null)
                {
                    m = new Kmodel();
                }

                ExpressionContext context = new ExpressionContext();
                context.Imports.AddType(typeof(Math));
                List <string> s = context.Variables.Keys.ToList();

                context.Variables["A"] = m.A; context.Variables["Ns"] = m.Ns;
                context.Variables["B"] = m.B; context.Variables["Nt"] = m.Nt;
                context.Variables["G"] = m.G; context.Variables["t"] = coeff.Temperature;
                context.Variables["H"] = m.H; context.Variables["value"] = value;
                context.Variables["J"] = m.J;

                IDynamicExpression eDynamic = context.CompileDynamic(rows[0].MathModel);
                var x = (double)eDynamic.Evaluate();
                return(x);
            }

            if (rows.FirstOrDefault(r => (r.ParamMin != 0) || (r.ParamMax != 0)) != null)
            {
                foreach (var row in rows)
                {
                    if ((row.ParamMax == 0) && (row.ParamMin > 0))
                    {
                        row.ParamMax = double.MaxValue;
                    }
                    if ((row.ParamMin <= value) && (value < row.ParamMax))
                    {
                        return(row.Value);
                    }
                }
            }

            if (rows.FirstOrDefault(r => r.ParamFix != 0) != null)
            {
                foreach (var row in rows)
                {
                    if (row.ParamFix != value)
                    {
                        return(row.Value);
                    }
                }
            }
            return(value);
        }