Levesque Xylia
Levesque Xylia

Reputation: 369

Get the max count of an array inside array?

I have an array inside the array and I want to get the Highest count of that Array,

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);
    }
}

in myList values are like this

Array 1 : { 1 }
Array 2 : { 3 }
Array 3 : { 0 }
Array 4 : { 6, 7, 8, 9, 10 }

I want to get the count of the highest sequence which is Array 4. and return the count of it which is 5.

how would I get that?

Upvotes: 0

Views: 719

Answers (4)

Lakshmanan Dhamotharan
Lakshmanan Dhamotharan

Reputation: 305

Try below lambda to get index position with count:

int index = 0;
var result = myList.Select(x => new { indexPos = ++index, x.Count }).OrderByDescending(x => x.Count).First();

Upvotes: 0

MakePeaceGreatAgain
MakePeaceGreatAgain

Reputation: 37000

Basically your task boils down to the following:

How to get the greatest number in a list

In order to achieve that, you have to iterate that (outer) list, get every elements member you want to compare - in your case the Count - and check if it is greater the current Max:

int max = 0;
foreach(var l in myList)
{
    if(l.Count > max)
        max = l.Count;
}

or even simpler using linq, see jdweng.

Upvotes: 1

viktor.hadomskyi
viktor.hadomskyi

Reputation: 227

Use following sample

    var maxCount = myList.Max(l => l.Count);

Upvotes: 6

jdweng
jdweng

Reputation: 34421

Try following :

            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);

Upvotes: 1

Related Questions