示例#1
0
        private static List <Row> EvaluteEqualOperator(List <Row> rows, RowValueQueryParam parameter)
        {
            var results = new List <Row>();

            if (parameter.QueryType == Enum.RowValueQuery.Equals)
            {
                Parallel.ForEach(rows, (row) =>
                {
                    Parallel.ForEach(row.Values, (value) =>
                    {
                        if (value.ColumnName == parameter.ColumnName &&
                            Convert.ChangeType(value.Value, value.ColumnType).Equals(
                                Convert.ChangeType(parameter.Value, parameter.ColumnDataType)))
                        {
                            results.Add(row);
                        }
                    });
                });
            }

            return(results);
        }
示例#2
0
        private static List <Row> EvaluateBetweenOperator(List <Row> rows, RowValueQueryParam parameter)
        {
            var results = new List <Row>();

            if (parameter.QueryType == Enum.RowValueQuery.Between)
            {
                var type = parameter.ColumnDataType;

                switch (true)
                {
                case bool _ when type == typeof(int):
                    var iMinValue = Convert.ToInt32(parameter.MinValue);
                    var iMaxValue = Convert.ToInt32(parameter.MaxValue);

                    Parallel.ForEach(rows, (row) =>
                    {
                        Parallel.ForEach(row.Values, (value) =>
                        {
                            if (value.ColumnName == parameter.ColumnName &&
                                value.ColumnType == parameter.ColumnDataType
                                )
                            {
                                if (Convert.ToInt32(value.Value) >= iMinValue &&
                                    (Convert.ToInt32(value.Value) <= iMaxValue))
                                {
                                    results.Add(row);
                                }
                            }
                        });
                    });

                    break;

                case bool _ when type == typeof(float):
                    var fMinValue = (float)parameter.MinValue;
                    var fMaxValue = (float)parameter.MaxValue;

                    Parallel.ForEach(rows, (row) =>
                    {
                        Parallel.ForEach(row.Values, (value) =>
                        {
                            if (value.ColumnName == parameter.ColumnName &&
                                value.ColumnType == parameter.ColumnDataType
                                )
                            {
                                if (Convert.ToDouble(value.Value) >= fMinValue &&
                                    (Convert.ToDouble(value.Value) <= fMaxValue))
                                {
                                    results.Add(row);
                                }
                            }
                        });
                    });

                    break;

                case bool _ when type == typeof(DateTime):
                    var dtMinValue = (DateTime)parameter.MinValue;
                    var dtMaxValue = (DateTime)parameter.MaxValue;

                    Parallel.ForEach(rows, (row) =>
                    {
                        Parallel.ForEach(row.Values, (value) =>
                        {
                            if (value.ColumnName == parameter.ColumnName &&
                                value.ColumnType == parameter.ColumnDataType
                                )
                            {
                                if (Convert.ToDateTime(value.Value) >= dtMinValue &&
                                    (Convert.ToDateTime(value.Value) <= dtMaxValue))
                                {
                                    results.Add(row);
                                }
                            }
                        });
                    });

                    break;

                default:
                    break;
                }
            }

            return(results);
        }
示例#3
0
        private static List <Row> EvaluateLessThanOperator(List <Row> rows, RowValueQueryParam parameter)
        {
            var results = new List <Row>();

            if (parameter.QueryType == Enum.RowValueQuery.LessThan)
            {
                var type = parameter.ColumnDataType;

                switch (true)
                {
                case bool _ when type == typeof(int):
                    var iValue = (int)parameter.Value;

                    Parallel.ForEach(rows, (row) =>
                    {
                        Parallel.ForEach(row.Values, (value) =>
                        {
                            if (value.ColumnName == parameter.ColumnName &&
                                value.ColumnType == parameter.ColumnDataType
                                )
                            {
                                if (Convert.ToInt32(value.Value) < iValue)
                                {
                                    results.Add(row);
                                }
                            }
                        });
                    });

                    break;

                case bool _ when type == typeof(float):
                    var fValue = (float)parameter.Value;

                    Parallel.ForEach(rows, (row) =>
                    {
                        Parallel.ForEach(row.Values, (value) =>
                        {
                            if (value.ColumnName == parameter.ColumnName &&
                                value.ColumnType == parameter.ColumnDataType
                                )
                            {
                                if (Convert.ToDouble(value.Value) < fValue)
                                {
                                    results.Add(row);
                                }
                            }
                        });
                    });

                    break;

                case bool _ when type == typeof(DateTime):
                    var dtValue = (DateTime)parameter.Value;

                    Parallel.ForEach(rows, (row) =>
                    {
                        Parallel.ForEach(row.Values, (value) =>
                        {
                            if (value.ColumnName == parameter.ColumnName &&
                                value.ColumnType == parameter.ColumnDataType
                                )
                            {
                                if (Convert.ToDateTime(value.Value) < dtValue)
                                {
                                    results.Add(row);
                                }
                            }
                        });
                    });

                    break;

                default:
                    break;
                }
            }

            return(results);
        }