Beispiel #1
0
    public static void Main(String[] args)
    {
        SCG.IComparer <Rec <string, int> > lexico1 = new Lexico();
        SCG.IComparer <Rec <string, int> > lexico2 =
            new DelegateComparer <Rec <string, int> >(
                delegate(Rec <string, int> item1, Rec <string, int> item2) {
            int major = item1.X1.CompareTo(item2.X1);
            return(major != 0 ? major : item1.X2.CompareTo(item2.X2));
        });
        Rec <String, int> r1 = new Rec <String, int>("Carsten", 1962);
        Rec <String, int> r2 = new Rec <String, int>("Carsten", 1964);
        Rec <String, int> r3 = new Rec <String, int>("Christian", 1932);

        Console.WriteLine(lexico1.Compare(r1, r1) == 0);
        Console.WriteLine(lexico1.Compare(r1, r2) < 0);
        Console.WriteLine(lexico1.Compare(r2, r3) < 0);
        Console.WriteLine(lexico2.Compare(r1, r1) == 0);
        Console.WriteLine(lexico2.Compare(r1, r2) < 0);
        Console.WriteLine(lexico2.Compare(r2, r3) < 0);

        SCG.IComparer <String> rev
            = ReverseComparer <String>(Comparer <String> .Default);
        Console.WriteLine(rev.Compare("A", "A") == 0);
        Console.WriteLine(rev.Compare("A", "B") > 0);
        Console.WriteLine(rev.Compare("B", "A") < 0);
    }
        private bool SortAndAdd(StringComparison stringComparison, [CanBeNull] XElement newNode)
        {
            var comparer = new DelegateComparer <string>((left, right) => string.Compare(left, right, stringComparison));

            string GetName(XElement node) => node.Attribute(_nameAttributeName)?.Value.TrimStart('>') ?? string.Empty;

            var nodes = _documentRoot
                        .Elements(_dataNodeName)
                        .ToArray();

            var sortedNodes = nodes
                              .OrderBy(node => GetName(node), comparer)
                              .ToArray();

            var hasContentChanged = SortNodes(nodes, sortedNodes);

            if (newNode == null)
            {
                return(hasContentChanged);
            }

            var newNodeName = GetName(newNode);
            var nextNode    = sortedNodes.FirstOrDefault(node => comparer.Compare(GetName(node), newNodeName) > 0);

            if (nextNode != null)
            {
                nextNode.AddBeforeSelf(newNode);
            }
            else
            {
                _documentRoot.Add(newNode);
            }

            return(true);
        }
        public void Test()
        {
            // Test a senseless comparison operator.
            var c = new DelegateComparer <int>((x, y) => x + y);

            Assert.AreEqual(10, c.Compare(3, 7));
        }
        public void compare_delegates_to_comparison_method()
        {
            var comparer = new DelegateComparer<int>((x, y) =>
            {
                Assert.Equal(x, 1);
                Assert.Equal(y, 2);
                return 3;
            });

            Assert.Equal(3, comparer.Compare(1, 2));
        }
        public void Task_01_Compare()
        {
            var c = new DelegateComparer <string>((x, y) => string.Compare(x, y, StringComparison.Ordinal));

            c.Compare(null, null).Should().Be(0);
            c.Compare(null, "A").Should().BeLessThan(0);
            c.Compare("A", null).Should().BeGreaterThan(0);
            c.Compare("A", "A").Should().Be(0);
            c.Compare("A", "B").Should().BeLessThan(0);
            c.Compare("B", "A").Should().BeGreaterThan(0);
        }
Beispiel #6
0
        public static void AddRange <T, TSort, TEquality>(
            this ObservableCollection <T> target,
            IEnumerable <T> collection,
            Func <T, TSort> sortSelector,
            Func <T, TEquality> equalitySelector)
            where TSort : IComparable
        {
            var sortComparer = new DelegateComparer <T>(
                (x, y) => sortSelector(x).CompareTo(sortSelector(y)));
            var equalityComparer = new DelegateEqualityComparer <T>(
                (x, y) => equalitySelector(x).Equals(equalitySelector(y)));
            var index = target.Count - 1;

            foreach (var addItem in collection.OrderBy(sortSelector))
            {
                if (index < 0)
                {
                    target.Insert(0, addItem);
                }
                else
                {
                    while (index >= 0)
                    {
                        var currentItem = target[index];
                        if (sortComparer.Compare(currentItem, addItem) >= 0)
                        {
                            if (equalityComparer.Equals(currentItem, addItem) != true)
                            {
                                target.Insert(index + 1, addItem);
                            }
                            break;
                        }
                        index -= 1;
                    }
                }
            }
        }
 public void Test()
 {
     // Test a senseless comparison operator.
       var c = new DelegateComparer<int>((x, y) => x + y);
       Assert.AreEqual(10, c.Compare(3, 7));
 }