How to grab certain values from a list?

I have a list of about 8 items of which they possess a one of the possible 2 values. So it could go like this… 2,8,8,8,2,2,8,2… and Im trying to get the lower values… Ill show the code it feels like there so much more code then there really needs to be.

    void FindLowerVertices()
    {
        float higher = 0;
        float lower = 0;
        float unknown;
        bool lowerFound = false;
        while (lowerFound == false)
        {
            foreach (Vector3 vertice in transformedVertices)
            {
                unknown = vertice.y;
                foreach (Vector3 verticeCheck in transformedVertices)
                {
                    if (verticeCheck.y < unknown)
                    {
                        higher = unknown;
                        lower = verticeCheck.y;
                        lowerFound = true;
                    }
                    if (verticeCheck.y > unknown)
                    {
                        lower = unknown;
                        higher = verticeCheck.y;
                        lowerFound = true;
                    }
                }
            }
        }
        foreach (Vector3 vertice in transformedVertices)
        {
            if (vertice.y == lower)
            {
                if (!(siftedFloorVertices.Contains(vertice)))
                {
                    siftedFloorVertices.Add(vertice);
                }
            }
        }
    }

I was looking up the linq function min group by and i thought it would be able to help me but I was finding it hard to implement it. Can someone help?

To sum up what I need to do is find the lowest value of the vertices y value. Then store the vertices with the lowest y value in a new list.

could try sorting the array,

Hm how would i compare with the average of all the y values because the y values are not going to be a,b,a,b,a,b… they are mixed?

using linq I have managed to reduce that code block to just this

        float verticeYAverage;
        verticeYAverage = (from v in transformedVertices select v.y).Average();
        siftedFloorVertices = (from v in transformedVertices where v.y < verticeYAverage select v).ToList();