Пример #1
0
        public static Hashtable ToDictionary(IEnumerable <object> items, ScriptBlock keySelector, ScriptBlock valueSelector = null, bool force = false, bool?ignoreCase = null)
        {
            var keyFunction = CreateSelector(keySelector);
            var valFunction = CreateSelector(valueSelector);

            var comparer = default(IEqualityComparer);

            if (ignoreCase.HasValue)
            {
                comparer = new Einstein.PowerShell.LINQ.PSObjectComparer(ignoreCase.Value);
            }

            var table = new Hashtable(comparer);

            foreach (var item in items)
            {
                var key = keyFunction(item);
                var val = valFunction(item);

                if (force)
                {
                    table[key] = val;
                }
                else
                {
                    table.Add(key, val);
                }
            }

            return(table);
        }
Пример #2
0
        public static bool SequenceEquals(IEnumerable <object> items, IEnumerable <object> other, bool?ignoreCase)
        {
            var comparer = default(IEqualityComparer <object>);

            if (ignoreCase.HasValue)
            {
                comparer = new Einstein.PowerShell.LINQ.PSObjectComparer(ignoreCase.Value);
            }
            return(items.SequenceEqual(other, comparer));
        }
Пример #3
0
        public static ISet <object> ToSet(IEnumerable <object> items, ScriptBlock selector, bool?ignoreCase)
        {
            var selectorFunc = CreateSelector(selector);
            var comparer     = default(IEqualityComparer <object>);

            if (ignoreCase.HasValue)
            {
                comparer = new Einstein.PowerShell.LINQ.PSObjectComparer(ignoreCase.Value);
            }

            return(new HashSet <object>(items.Select(selectorFunc), comparer));
        }
Пример #4
0
        public static bool SetEquals(IEnumerable <object> items, IEnumerable <object> other, bool?ignoreCase)
        {
            var comparer = default(IEqualityComparer <object>);

            if (ignoreCase.HasValue)
            {
                comparer = new Einstein.PowerShell.LINQ.PSObjectComparer(ignoreCase.Value);
            }
            var hashSet = new HashSet <object>(items, comparer);

            return(hashSet.SetEquals(other));
        }