Pretty minor but you don't need the if (row_id == 0)
if (row_id++ > list_size) // Add the sublist to the result
{
result.Add(route_list);
row_id = 0;
route_list = new List<long>();
}
Also it seem like you should also test for
if (route_list.Count > 0 )
Why not just put where route_source_id is not null
in the query?
Connection, Command, and Reader behave the same with many DB so this is pretty portable.
I think you can use
conn.CreateCommand()
Long is not required for row_id
or list_size
Why bump row_id++
if there is no value?
In summary
using (var reader = cmd.ExecuteReader())
{
const int list_size = 100;
List<long> route_list = new List<long>(list_size);
while (reader.Read())
{
if (route_list.Count >= list_size) // Add the sublist to the result
{
result.Add(route_list);
route_list = new List<long>(list_size);
}
route_list.Add(reader.GetInt64(0));
}
if (route_list.Count > 0 ) // add the last sublist
{
result.Add(route_list);
}
}