The List that you're creating "in the middle" of your statement "knows" the number of records. You can simply do it in two steps and get the number of records inbetween:
var rows = dataTable.Select(string.Format("[rollNumber]>'{0}'", 10)).ToList<DataRow>();
int numberOfRecords = rows.Count;
rows.ForEach(r =>
{
r["Sem"] = 6;
});