Что именно вы подразумеваете под "лучше" ? Быстрее? Полегче?
По сути, похоже, что вы написали специальный метод, оптимизированный для одной конкретной задачи. Вы упомянули обобщение, но его преимущество в производительности проистекает из того факта, что он настолько специфичен (если предположить, что - это преимущество в производительности - такие методы, как Count
, уже достаточно сильно настроены для производительности, а компилятор довольно хорош на оптимизацию, как это).
Преждевременная оптимизация - корень всего зла. Если выполнение этой конкретной операции настолько важно, что стоит заменить выражение из двадцати с лишним символов xyz.Count() == abc
десятками строк кода, вы Возможно, вы захотите попробовать другие методы повышения производительности, такие как рефакторинг. В большинстве случаев только издержки от использования управляемого кода приведут к уменьшению получаемого бонуса производительности (если есть).
При этом - если у вас есть что-то вроде 10 миллионов предметов, и количество ваших целей намного меньше, я уверен, что нижеприведенное закоротит итерацию:
int count = 0;
var subset = items.TakeWhile(x => count++ < n + 1);
return count == n + 1;
Легко читать, легко обслуживать и, вероятно, так же быстро.