public Expression <Func <DataRow, bool> > CreateWhereClause(IAxis axis, object Element, int Column)
        {
            AxisType type = axis.AxisType;

            //Console.WriteLine(type);
            switch (type)
            {
            case AxisType.WD:
            {
                int    thisElement = (int)Element;
                double xRangeStart = axis.GetRange(thisElement, Range.start);
                double xRangeEnd   = axis.GetRange(thisElement, Range.end);

                // Console.WriteLine(thisElement  +  " start " + xRangeStart + " end " + xRangeEnd);
                // wd directing bins return the target ws values only if not missing

                if (thisElement == 0)
                {
                    Expression <Func <DataRow, bool> > result = c => (c.Field <double>(Column) >= xRangeStart && c.Field <double>(Column) <= 360)
                                                                | (c.Field <double>(Column) >= 0 && c.Field <double>(Column) < xRangeEnd);

                    return(result);
                }
                else
                {
                    Expression <Func <DataRow, bool> > result = c => (c.Field <double>(Column) >= xRangeStart && c.Field <double>(Column) < xRangeEnd);
                    return(result);
                }
            }

            case AxisType.WS:
            {
                int    thisElement = (int)Element;
                double xRangeStart = axis.GetRange(thisElement, Range.start);
                double xRangeEnd   = axis.GetRange(thisElement, Range.end);

                // Console.WriteLine(thisElement  +  " start " + xRangeStart + " end " + xRangeEnd);


                Expression <Func <DataRow, bool> > result = c => (c.Field <double>(Column) >= xRangeStart && c.Field <double>(Column) < xRangeEnd);
                return(result);
            }

            case AxisType.Month:
            {
                double xVal = axis.GetAxisValue(Element);

                Expression <Func <DataRow, bool> > result = c => c.Field <DateTime>(Column).Month == xVal;
                return(result);
            }

            case AxisType.Hour:
            {
                double xVal = axis.GetAxisValue(Element);

                Expression <Func <DataRow, bool> > result = c => c.Field <DateTime>(Column).Hour == xVal;
                return(result);
            }

            default:
            {
                return(null);
            }
            }
        }