Пример #1
0
        public void Add(string val)
        {
            if (String.IsNullOrEmpty(val))
            {
                HasNulls = true;
                val      = "<NULL>";
            }
            else if (DataType != typeof(string))
            {
                if (DataType == typeof(int))
                {
                    CheckInt_(val);
                }
                if (DataType == typeof(double))
                {
                    CheckDbl_(val);
                }
                if (DataType == typeof(DateTime))
                {
                    CheckDT_(val);
                }
            }

            int curr;

            if (ValCount.TryGetValue(val, out curr))
            {
                ValCount[val] = curr + 1;
            }
            else
            {
                ValCount[val] = 1;
            }
        }
Пример #2
0
        private void ValidateValue(object obj)
        {
            // Validate Length again.  But this time only for array elements on a string[].
            if (ValLen != null)
            {
                if (type.IsArray)
                {
                    if (type.GetElementType() == typeof(string))
                    {
                        Array sa = (string[])obj;
                        foreach (string s in sa)
                        {
                            string tmpString = s;
                            if (ValLen.TrimFirst)
                            {
                                tmpString = tmpString.Trim();
                            }
                            if (!ValLen.IsInRange(tmpString.Length))
                            {
                                Throw.ValidationLength(this.Name, ValLen.Min, ValLen.Max);
                            }
                        }
                    }
                }
            }

            Array array = null;

            if (type.IsArray)
            {
                array = (Array)obj;
            }

            // Validate Count.
            if (this.ValCount != null)
            {
                if (!ValCount.IsInRange(array.Length))
                {
                    Throw.ValidationArrayCount(this.Name, ValCount.Min, ValCount.Max);
                }
            }

            bool   inValSet    = false;
            string sObj        = null;
            bool   objIsString = false;

            if (obj is string)
            {
                sObj        = (string)obj;
                objIsString = true;
            }

            // Validate Set (i.e. select list.)
            if (this.ValSet != null)
            {
                if (type.IsArray)
                {
                    // Verify each element in the array is in the ValSet.
                    foreach (object o in array)
                    {
                        bool isInSet = false;

                        // Each o must be in the set.
                        if (o is string)
                        {
                            string os = (string)o;
                            foreach (string s in valSet)
                            {
                                if (this.valSetCaseInsensitive)
                                {
                                    if (os.Equals(s, StringComparison.OrdinalIgnoreCase))
                                    {
                                        isInSet = true;
                                        break;
                                    }
                                }
                                else
                                {
                                    if (os.Equals(s, StringComparison.Ordinal))
                                    {
                                        isInSet = true;
                                        break;
                                    }
                                }
                            }
                        }
                        else
                        {
                            //bool isInSet = false;
                            foreach (object vo in ValSet)
                            {
                                IComparable ic = (IComparable)o;
                                if (ic.CompareTo(vo) == 0)
                                {
                                    isInSet = true;
                                    break;
                                }
                            }
                        }
                        if (!isInSet)
                        {
                            Throw.ValidationSet(this.Name, obj.ToString());
                        }
                    }
                }
                else                 // Type is not an array, so verify the value is in the ValSet.
                {
                    foreach (object o in ValSet)
                    {
                        if (objIsString)
                        {
                            if (valSetCaseInsensitive)
                            {
                                if (sObj.Equals((string)o, StringComparison.OrdinalIgnoreCase))
                                {
                                    inValSet = true;
                                    break;
                                }
                            }
                            else
                            {
                                if (sObj.Equals((string)o, StringComparison.Ordinal))
                                {
                                    inValSet = true;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            IComparable ic = (IComparable)obj;
                            if (ic.CompareTo(o) == 0)
                            {
                                inValSet = true;
                                break;
                            }
                        }
                    }
                    if (!inValSet)
                    {
                        Throw.ValidationSet(this.Name, obj.ToString());
                    }
                }
            }

            // Validate Range.
            if (this.valRange != null)
            {
                if (type.IsArray)
                {
                    // Validate each element in the array is within range.
                    foreach (object o in array)
                    {
                        if (!valRange.IsInRange(o))
                        {
                            Throw.ValidationRange(this.Name, valRange.Min, valRange.Max);
                        }
                    }
                }
                else
                {
                    if (!valRange.IsInRange(obj))
                    {
                        Throw.ValidationRange(this.Name, valRange.Min, valRange.Max);
                    }
                }
            }

            // Validate Pattern.
            if (this.valPattern != null)
            {
                Regex rx = new Regex(this.valPattern);
                if (type.IsArray)
                {
                    string[] sa = (string[])obj;
                    foreach (string s in sa)
                    {
                        if (!rx.IsMatch(s))
                        {
                            Throw.ValidationPattern(this.Name, valPattern);
                        }
                    }
                }
                else
                {
                    if (!rx.IsMatch((string)obj))
                    {
                        Throw.ValidationPattern(this.Name, valPattern);
                    }
                }
            }
        }
Пример #3
0
 public IEnumerable <KeyValuePair <string, int> > MostCommon(int n)
 {
     return(ValCount.OrderByDescending(o => o.Value).Take(n));
 }
Пример #4
0
 public KeyValuePair <string, int> MostCommon()
 {
     return(ValCount.OrderByDescending(o => o.Value).First());
 }