Aggregate cidrs up to a limit
First just a small cosmetic improvement: I'd call the method MergeSimilarIps or something like this (you know better what name would make more sense). Aggregate suggests you would get a sigle result.




    foreach (var cidrA in parsedCidrs)
    {
        foreach (var cidrB in parsedCidrs)
        {
            if (cidrA != cidrB)
            {



I thnink you can speed the merge a little bit by using for loops and starting the second one at i + 1 of the first loop. This way you check x == y only once because y == x is the same an you already checked it so there is no need that you do it again plus the + 1 will skip x == x.

Compare these two loops. The first one works like in your solution:

var nums = new [] { 1, 2, 3 };

foreach (var x in nums)
{
    foreach (var y in nums)
    {
        Console.WriteLine($"({x}, {y})");
    }
}


its result is:



(1, 1)
(1, 2)
(1, 3)
(2, 1)
(2, 2)
(2, 3)
(3, 1)
(3, 2)
(3, 3)


The second one works without repetitions.

for (var x = 0; x &lt; nums.Length; x++)
{
    for (var y = x + 1; y &lt; nums.Length; y++)
    {
        Console.WriteLine($"({nums[x]}, {nums[y]})");
    }
}


It produces only 1/3 of this list above:



(1, 2)
(1, 3)
(2, 3)


This means you get only unique combinations without repetitions.