Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
我怎样才能得到一个Guid
具有MAX
价值?
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
我怎样才能得到一个Guid
具有MAX
价值?
使用LINQ:
d.Keys.Max(); // Returns the greatest key
但他要求具有最大价值的钥匙。这只是给我们最大的关键,所以这是错误的。 – robbpriestley 2016-06-22 22:17:27
这个问题可以用两种方式来解释,而且由于OP接受了这个答案,我可以假设这就是他的意思。 – Asik 2016-06-23 15:03:36
的Guid实现IComparable的,所以:
d.Keys.Max()
而且目前还不清楚为什么人会想这样做......
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());
假设你想要最大日期时间的GUID ... – 2012-04-24 02:12:14
重新阅读这个问题,我认为这是正确的解释,并且唯一的答案给出了正确的结果(尽管我怀疑它可以缩短与LINQ,它不会比这个显式循环更快)。 – 2012-04-24 02:14:21
@BenVoigt显式循环在清晰度方面最好。另一篇文章[这里](https://stackoverflow.com/q/2805703/465053)有一些很好的答案。本文中接受的答案声称使用LINQ进行单一扫描。 – RBT 2017-09-04 07:52:56
这效果很好。它将返回MAX日期的GUID。
Dictionary<Guid, DateTime> d = new Dictionary<Guid, DateTime>();
var guidForMaxDate = d.FirstOrDefault(x => x.Value == d.Values.Max()).Key;
固体代码完成这项工作 – 2016-03-10 00:37:26
不错,虽然我会先将'd.Values.Max()'输出到一个变量中,否则它可能会在每次迭代中重复搜索Max()。 – Nyerguds 2017-09-21 07:21:04
另一种方式可能有助于获得单一KeyValuePair。
KeyValuePair<char, int> GuidKeyPair = guidDict.FirstOrDefault(MaxGuid => MaxGuid.Value == guidDict.Values.Max());
首先订购您的数据可能是一个解决方案。
var maxGuid = d.OrderByDescending(x => x.Value).FirstOrDefault().Key;
接受的答案不适用于我。下面的代码(使用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()));
的可能重复[获取字符值的最大值()](http://stackoverflow.com/questions/7268605/get-max-of-alphanumeric-value) – 2012-04-24 02:06:56
请尝试之前,做自己的研究对SO提出问题。 – 2012-04-24 02:07:49
由于“GUID”代表“全球唯一标识符”,因此您会想要一个“最大”值,这似乎令人难以置信的奇怪。 GUID因其独特性而被使用;我想不出一个真实世界的应用程序,把它们看作是有序的。 – jpmc26 2014-05-08 10:15:34