Chunking a list into separate lists of 5, and then iterating through each
Separate the mechanics and the semantics of the code. Here's my very well used Batch&lt;T&gt; extension method on IEnumerable&lt;T&gt;:

public static class EnumerableExtensions
{
    public static IEnumerable&lt;IEnumerable&lt;T&gt;&gt; Batch&lt;T&gt;(this IEnumerable&lt;T&gt; enumerable, int batchSize)
    {
        if (enumerable == null) throw new ArgumentNullException(nameof(enumerable));
        if (batchSize &lt;= 0) throw new ArgumentOutOfRangeException(nameof(batchSize));
        return enumerable.BatchCore(batchSize);
    }

    private static IEnumerable&lt;IEnumerable&lt;T&gt;&gt; BatchCore&lt;T&gt;(this IEnumerable&lt;T&gt; enumerable, int batchSize)
    {
        var c = 0;
        var batch = new List&lt;T&gt;();
        foreach (var item in enumerable)
        {
            batch.Add(item);
            if (++c % batchSize == 0)
            {
                yield return batch;
                batch = new List&lt;T&gt;();
            }
        }
        if (batch.Count != 0)
        {
            yield return batch;
        }
    }
}


Now that's the batching taken care of, we need to sort out the loop. What would we like it to look like?

foreach (var batch in latLongList.Batch(5))
{
    SetupCaseFileUpdateTransaction(transactionCode, fileType, fileNumber, commentText1, commentText2, transactionDate, username, password);
    SetWebServiceBatch(batch.ToList());
    CallWebService();
}


Great! The main method is now much shorter and easier to reason about. However, we've just moved the problem elsewhere. So let's look at the SetWebServiceBatch piece:

// Typed directly into CR so may not compile/be 100% right.
private void SetWebServiceBatch(List&lt;LatLongEntry&gt; latLongs)
{
    if(latLongs.Count &gt; 5) throw new ArgumentException(nameof(latLongs));
    for (var i = 0; i &lt; latLongs.Count; i++)
    {
        if (i &lt; 3)
        {
            SetCode(1 + i * 2, latLongs[i].Latitude);
            SetCode(2 + i * 2, latLongs[i].Longitude);
        }
        else
        {
            SetMisc(1 + (i - 3) * 2, latLongs[i].Latitude);
            SetMisc(2 + (i - 3) * 2, latLongs[i].Longitude);
        }
    }
}


Note that I've assumed that skipping SetCode(3 was a mistake and that you want to set code 1,2,3,4,5,6 and set misc 1,2,3,4. If that's not the case you'll need to slightly modify the for loop to take into account this discontinuity.