If you do not specify a predicate for the First method then it returns the first element in that sequence. It is probably your database that is returning the results in a random order, not the LinQ method. Maybe try using a predicate to filter out the null values ,something like this
var q = PaymentsSummary.First(i => i.Amount > 0);
or something
Hope this helps