If you're just interested in the count where all three functions evaluate to true, then this should be sufficient:
var TotalTrue = FilteredRowsToday.Count(item => f1() & f2() & f3());
As for why it's slow, your functions could be the reason behind this.
You could try only evaluating the rows until either all three functions return true, or at least one of them return false, e.g.
var TotalTrue = FilteredRowsToday.Count(item => f1() && f2() && f3());
I.e. If f1()
evaluates to false
, then don't bother doing the rest of the validations.
UPDATE: If your functions aren't doing any resource-intensive checks, then parallel LINQ won't do you much good (more info here).