Вы можете создать класс для представления каждого пользователя:
class User {
public string Name { get; set; }
public DateTime DateJoined { get; set; }
public int Score { get; set; }
}
Тогда, если у вас есть список пользователей
List<User> users = new List<User>();
Вы можете отсортировать по баллам:
users.Sort(delegate (string left, string right) {
return left.Score.CompareTo(right.Score);
});
или по дате присоединения:
users.Sort(delegate (string left, string right) {
return left.DateJoined.CompareTo(right.DateJoined);
});
Если вы можете использовать C # 3 или более позднюю версию, тогда с выражениями Linq и Lambda это станет намного приятнее.
Например:
var top50pcUsersByScore = users.OrderBy(u => u.Score).Take(users.Count / 2);