That's complicated, because it depends on what is in the two lists. If they share a common value, you can JOIN them fairly easily, but I suspect from your wish to combine them as two columns in a new list that they don't.
In that case, it's a bit complicated, but:
List<string> ls = new List<string>();
ls.Add("S1");
ls.Add("S2");
ls.Add("S3");
ls.Add("S4");
List<int> li = new List<int>();
li.Add(1);
li.Add(2);
li.Add(3);
li.Add(4);
var newList = ls.Join(li, s => ls.IndexOf(s), i => li.IndexOf(i), (s, i) => new { sv = s, iv = i }).ToList();
foreach (var x in newList)
{
Console.WriteLine("{0}, {1}", x.sv, x.iv);
}
Will give you the two columns you seem to want:
S1, 1
S2, 2
S3, 3
S4, 4