Soru: verilen IEnumerable<>
, hangi sıralamanın x
öğesinden daha fazlasını içerdiğini nasıl kontrol edilir? Optimize LINQ Sayısı()> X
:
static void Main(string[] args)
{
var test = Test().Where(o => o > 2 && o < 6); // ToList()
if (test.Count() > 1) // how to optimize this?
foreach (var t in test) // consumer
Console.WriteLine(t);
}
static IEnumerable<int> Test()
{
for (int i = 0; i < 10; i++)
yield return i;
}
Buradaki sorun Count()
tam dizisini çalışacak budur ve bu 1E6
+ öğe (ToList()
da kötü bir fikir) bulunuyor. Ayrıca tüketici kodunu değiştirmemize izin verilmiyor (tam diziyi kabul eden bir yöntem). büyüktest
koleksiyonu (Count()
pahalı olduğunda), tipik bir hile deneyebilirsiniz durumunda
olacaktır: posta bir yöntemde yılında böyle bir hile isteyebilir,
EnsureCount
demek? – Pikoh'Any()' kesinlikle iyi olmalı mı? Count(), bir dizinin herhangi bir öğe içerip içermediğini belirleyen "Any" ifadesinin aksine tüm koleksiyonu toplar. – Ric
@Pikoh, kötüyüm, 'Any()', 'item()' koşullarına uyan ilk öğeye kadar sırayla koşuyordu. Evet, 'Any()' x = 1' olduğunda durumu gösterir. – Sinatr