gpt4 book ai didi

c# - SortedList of Lists 中最长的列表

转载 作者:太空狗 更新时间:2023-10-30 00:05:01 26 4
gpt4 key购买 nike

我有一个列表的排序列表,我有兴趣找到与最长列表(其中包含最多项目的列表)相对应的键。在代码中,它看起来像:

// how the list is defined:
var myList = new SortedList<long, List<string>>();

// EXAMPLE data only:
myList.Add(0, new List<string>());
myList[0].AddRange(new []{"a", "b", "c"});

myList.Add(8, new List<string>());
myList[8].AddRange(new []{"1", "2"});

myList.Add(23, new List<string>());
myList[23].AddRange(new []{"c", "d", "e", "f", "g"});

在上面的例子中,结果应该是“23”,因为这是最长列表的键。

我知道如何使用 for 循环编写此代码,但我认为使用 LINQ 应该很简单。也就是说,我似乎无法完全正确地理解语法!感谢您的帮助!

最佳答案

也许有更有效的方法,但您可以按(值)计数降序排列,然后先取。

myList.OrderByDescending(m => m.Value.Count()).First().Key;

当然,如果您想要所有具有最高计数的键(它们可能是具有相同长度的多个值),您应该按计数进行分组。

类似的东西。

myList.GroupBy(m => m.Value.Count())
.OrderByDescending(m => m.Key)//I'm the key of the group by
.First()
.Select(g => g.Key);//I'm the key of the SortedList

因此,如果您向样本中添加一个具有相同列表长度的项目

myList.Add(24, new List<string>());
myList[24].AddRange(new[] {"a", "b", "c", "d", "e"});

你会得到 23 和 24。

同样可以实现

from item in myList
let maxCount = myList.Max(x => x.Value.Count())
where item.Value.Count() == maxCount
select item.Key;

关于c# - SortedList of Lists 中最长的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21531209/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com