Как получить значение MAX из словаря? - программирование
Подтвердить что ты не робот

Как получить значение MAX из словаря?

У меня

Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();

Как я могу получить Guid со значением MAX?

4b9b3361

Ответ 1

Использование LINQ:

d.Keys.Max(); // Returns the greatest key

Ответ 2

Это отлично работает. Он вернет идентификатор GUID для даты MAX.

Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>(); 
var guidForMaxDate = d.FirstOrDefault(x => x.Value == d.Values.Max()).Key;

Ответ 3

            var maxGuid = Guid.Empty;
            var maxDateTime = DateTime.MinValue;
            foreach (var kvp in d)
            {
                if (kvp.Value > maxDateTime)
                {
                    maxGuid = kvp.Key;
                    maxDateTime = kvp.Value;
                }
            }
            Console.WriteLine("Guid of max date is: " + maxGuid.ToString());

Ответ 4

Руководство реализует IComparable, поэтому:

d.Keys.Max()

Также непонятно, почему это хотелось бы сделать...

Ответ 5

Заказ ваших данных в первую очередь может быть одним из решений.

var maxGuid = d.OrderByDescending(x => x.Value).FirstOrDefault().Key;

Ответ 6

Другой способ может помочь получить Single KeyValuePair.

KeyValuePair<char, int> GuidKeyPair = guidDict.FirstOrDefault( MaxGuid => MaxGuid.Value == guidDict.Values.Max());

Ответ 7

Принятый ответ не помог мне. Следующий код (используя MoreLinq) выполнил эту работу, хотя:

var fooDict = new Dictionary<string, int>();
var keyForBiggest = fooDict.MaxBy(kvp => kvp.Value).Key;
var biggestInt = fooDict[keyForBiggest];

Ответ 8

Используя LINQ в словаре.

var MaximumValue = dict.FirstOrDefault(x => x.Value.Equals(dict.Values.Max()));