C# 获取数组内部数组的最大计数?
我在数组中有一个数组,我想得到该数组的最高计数C# 获取数组内部数组的最大计数?,c#,arrays,C#,Arrays,我在数组中有一个数组,我想得到该数组的最高计数 List<int> badnumber = new List<int>() { 5,4,2, 15 }; int lower = 1; int upper = 10; int count = 0; List<int> goodnumber = new List<int>(); List<List<int>> myList = new List<List<int&
List<int> badnumber = new List<int>() { 5,4,2, 15 };
int lower = 1;
int upper = 10;
int count = 0;
List<int> goodnumber = new List<int>();
List<List<int>> myList = new List<List<int>>();
for (int i = lower; i <= upper; i++)
{
if (!badnumber.Contains(i))
{
if (!goodnumber.Contains(i))
goodnumber.Add(i);
}
else
{
myList.Add(goodnumber);
goodnumber = new List<int>();
}
if (i == upper) {
myList.Add(goodnumber);
}
}
我想得到最高序列的计数,即数组4。并返回它的计数,即5
我怎样才能得到它呢?试试下面的方法:
List<List<int>> myList = new List<List<int>>() {
new List<int> { 1},
new List<int> { 3},
new List<int> { 0},
new List<int> { 6,7,8,9,10}
};
int results = myList.Max(x => x.Count);
List myList=new List(){
新列表{1},
新名单{3},
新列表{0},
新名单{6,7,8,9,10}
};
int results=myList.Max(x=>x.Count);
使用以下示例
var maxCount = myList.Max(l => l.Count);
基本上,您的任务可以归结为以下几点: 如何获得列表中的最大数字 为了实现这一点,您必须迭代该(外部)列表,获取要比较的每个元素成员(在您的示例中为
计数
),并检查其是否大于当前的最大值
:
int max = 0;
foreach(var l in myList)
{
if(l.Count > max)
max = l.Count;
}
或者更简单地使用linq,请参见jdweng。尝试在lambda下面使用count获取索引位置:
int index = 0;
var result = myList.Select(x => new { indexPos = ++index, x.Count }).OrderByDescending(x => x.Count).First();
首先::数组不是列表。离开那个助理,你想干什么?你肯定知道如何计算列表的长度,不是吗?只需列出所有列表,并获得最重要的列表。这与在一个集合中选择最大数量的任务完全相同。
MaxBy
MoreLINQ可能比OrderByDescending
和First
更可取。我同意你的看法。我可以使用MoreLINQ库得到同样的结果。下面是给出相同结果的示例查询:var result2=myList.Select(x=>new{indexPos=++index,x.Count}).MaxBy(x=>x.Count);或foreach(…)max=Math.max(max,l.Count)有没有办法优化我上面的代码?因为上面代码的运行时间超过了3秒。如何使其达到2或以下?
int index = 0;
var result = myList.Select(x => new { indexPos = ++index, x.Count }).OrderByDescending(x => x.Count).First();