Sorting Arrays based on a Class with Values

Hello @ all,
I’m trying to sort my Player Class Array by a value.
I have a Player class with some values and try to sort by _PlayerArray[ ]._PPunkte. But i don’t know how to access my “_PPunkte” Value with something like “array.sort(_PlayerArray)”.

I tried something like “array.sort(_PlayerArray._PPunkte)” but that don’t work. :frowning:

My Class:

public class Player {
    private string _pname;
    private int _ppunkte;
    private int _ptipp;
    private int _pergebnis;

    public string _PName {
        get { return _pname; }
        set { _pname = value; }
    }

    public int _PPunkte {
        get { return _ppunkte; }
        set { _ppunkte = value; }
    }

    public int _PTipp {
        get { return _ptipp; }
        set { _ptipp = value; }
    }

    public int _PErgebnis {
        get { return _pergebnis; }
        set { _pergebnis = value; }
    }
}

My Array:

PlayerArray = new Player[6];

for (int i = 0; i < 6 ; i++) {
            _PlayerArray = new Player();
            _PlayerArray._PName = "some code" ; -> Got some Inputvalues
            _PlayerArray._PPunkte = 0; -> Changes Value ingame
            _PlayerArray._PTipp = 0;
            _PlayerArray._PErgebnis = 0;
        }

USE CODE TAGS!

Also, Array.Sort accepts a delegate for comparing values when sorting:

See example at bottom

1 Like

Hi,
thank you for that Tip!
It was a hard way for me to get a working solution from that Info, because of my beginner level, but at the end I found it out. :slight_smile:

    private static int ComparePlayerbyPoints(Player x, Player y) {
        return x._PPunkte.CompareTo(y._PPunkte);
    }
1 Like