così al volo mi viene in mente una soluzione del genere. funziona, ma non è la migliore per le tue necessità...

codice:
    class Program
    {
        static void Main(string[] args)
        {
            List<Riga> m_righe = new List<Riga>();
            m_righe.Add(new Riga());
            m_righe[0].Valori.Add(2);
            m_righe[0].Valori.Add(3);
            m_righe.Add(new Riga());
            m_righe[1].Valori.Add(4);
            m_righe[1].Valori.Add(5);
        }
    }

    public class Riga
    {
        private List<int> m_valori;

        public List<int> Valori
        {
            get { return this.m_valori; }
        }

        public Riga()
        {
            m_valori = new List<int>();
        }
    }