You could try using inheritance but Solution 1 is probably better if it can be used
public class MyData<T> : List<Tuple<string, List<T>>>
{
}
MyData<string> dataA = new MyData<string>();
dataA.Add(new Tuple<string, List<string>>("String 1", new List<string> { "A", "B", "C" }));
dataA.Add(new Tuple<string, List<string>>("String 2", new List<string> { "X", "Y", "Z" }));
MyData<int> dataB = new MyData<int>();
dataB.Add(new Tuple<string, List<int>>("Int 1", new List<int> { 1, 2, 3 }));
dataB.Add(new Tuple<string, List<int>>("Int 2", new List<int> { 4, 5, 6 }));