Ответ 1
Использование LINQ:
d.Keys.Max(); // Returns the greatest key
У меня
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
Как я могу получить Guid
со значением MAX
?
Использование LINQ:
d.Keys.Max(); // Returns the greatest key
Это отлично работает. Он вернет идентификатор GUID для даты MAX.
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
var guidForMaxDate = d.FirstOrDefault(x => x.Value == d.Values.Max()).Key;
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());
Руководство реализует IComparable, поэтому:
d.Keys.Max()
Также непонятно, почему это хотелось бы сделать...
Заказ ваших данных в первую очередь может быть одним из решений.
var maxGuid = d.OrderByDescending(x => x.Value).FirstOrDefault().Key;
Другой способ может помочь получить Single KeyValuePair.
KeyValuePair<char, int> GuidKeyPair = guidDict.FirstOrDefault( MaxGuid => MaxGuid.Value == guidDict.Values.Max());
Принятый ответ не помог мне. Следующий код (используя MoreLinq) выполнил эту работу, хотя:
var fooDict = new Dictionary<string, int>();
var keyForBiggest = fooDict.MaxBy(kvp => kvp.Value).Key;
var biggestInt = fooDict[keyForBiggest];
Используя LINQ в словаре.
var MaximumValue = dict.FirstOrDefault(x => x.Value.Equals(dict.Values.Max()));