Оба решения, предложенные выше, верны.
p.List.Where(x => x.IsConCurrent== true && (x.Codes == Codes.W|| x.Codes== Codes.Q) && x.PCBNumber.Length == 15);
p.List.Where(x => x.IsConCurrent == true).Where(x => x.Codes == Codes.W || x.Codes == Codes.Q).Where(x => x.PCBNumber.Length == 15).Count()
На самом деле они выполняются одинаково. Функция Where не вызывает немедленную итерацию по источнику данных. Только когда вы выполняете функцию Count, LINQ будет обрабатывать строку за строкой и выполнять критерий за критерием, чтобы выяснить, какие значения следует рассчитать.
Я могу только предложить добавить оператор Take (2) после предложения where. В этом случае LINQ остановится после нахождения первых двух строк, соответствующих предоставленному критерию, а остальные строки не будут обработаны.
p.List.Where(x => x.IsConCurrent == true)
.Where(x => x.Codes == Codes.W || x.Codes == Codes.Q)
.Where(x => x.PCBNumber.Length == 15)
.Take(2).Count()