Ben ben MAX
değere sahip bir Guid
alabilirsiniz nasılSözlükten MAX değeri nasıl alınır?
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
?
d.Keys.Max(); // Returns the greatest key
Ben ben MAX
değere sahip bir Guid
alabilirsiniz nasılSözlükten MAX değeri nasıl alınır?
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
?
d.Keys.Max(); // Returns the greatest key
Ayrıca
d.Keys.Max()
öyle ... biri bunu neden istediğini belli değil
Ancak Max Değeri olan Anahtarı istedi. Bu bize azami Anahtarı verir, bu yüzden yanlış bir şey. – robbpriestley
Soru her iki şekilde de yorumlanabilir ve OP bu cevabı kabul ettiği için bunun ne anlama geldiğini düşünebilirim. – Asik
Guıd yüzden, IComparable uygulayan: Entities kullanarak
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());
Max DateTime için GUID istediğinizi varsayalım ... –
Soruyu yeniden okurken, bunun doğru yorumlama olduğunu ve doğru sonucu veren tek cevabın olduğunu düşünüyorum (LINQ ile daha kısa yapılabileceğinden şüpheliyim, Bu açık döngüden daha hızlı olmayacaktır). –
@BenVoigt açık döngü burada açıklık açısından en iyi anlaşmadır. Bazı çok iyi cevaplarla [burada] (https://stackoverflow.com/q/2805703/465053). Bu yazıda kabul edilen cevap LINQ kullanarak tek bir taramaya sahip olduğunu iddia ediyor. – RBT
Bu harika çalışıyor. MAX tarihi için GUID değerini döndürür.
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
var guidForMaxDate = d.FirstOrDefault(x => x.Value == d.Values.Max()).Key;
Katı kod, –
numaralı işi güzel yapıyor, ancak ben bunu önceden bir değişkene 'd.Values.Max() 'yi alıyorum, aksi halde muhtemelen her bir yineleme için Max() için bu aramayı tekrarlayacaktır. – Nyerguds
başka yolu da kudreti Tek KeyValuePair almak için yardımcı olur.
KeyValuePair<char, int> GuidKeyPair = guidDict.FirstOrDefault(MaxGuid => MaxGuid.Value == guidDict.Values.Max());
ilk etapta verilerinizi Sipariş tek çözüm olabilir.
var maxGuid = d.OrderByDescending(x => x.Value).FirstOrDefault().Key;
Kabul edilen yanıt benim için çalışmadı. Aşağıdaki kod (MoreLinq kullanılarak), şu işi yapmıştır: Sözlük üzerinde LINQ kullanarak:
var fooDict = new Dictionary<string, int>();
var keyForBiggest = fooDict.MaxBy(kvp => kvp.Value).Key;
var biggestInt = fooDict[keyForBiggest];
.
var MaximumValue = dict.FirstOrDefault(x => x.Value.Equals(dict.Values.Max()));
ait
olası yinelenen [alfanümerik değerin Max() Get] (http://stackoverflow.com/questions/7268605/get-max-of-alphanumeric-value) –
önce kendi araştırma yapmak deneyin SO hakkında soru sormak. –
"GUID", "global olarak benzersiz tanımlayıcı" anlamına geldiğinden, "maksimum" bir değer elde etmek istediğinizden çok garip görünüyor. Bir GUID, benzersizliği nedeniyle kullanılır; Onları hiç sipariş edildiği gibi düşünmenin mantıklı olduğu gerçek bir dünya uygulamasını düşünemiyorum. – jpmc26