Я извлекаю список элементов, используя Entity Framework, и если есть какие-то найденные элементы, я что-то делаю с ними.IEnumerable Count() vs List <T> .Count с платформой Entity
var items = db.MyTable.Where(t => t.Expiration < DateTime.Now).ToList();
if(items.Count != 0)
{
// Do something...
}
if
заявление также может быть записана в виде
if(items.Count() != 0)
{
// Do something...
}
В первом случае .Count
является List<T>.Count
собственностью. Во втором случае .Count()
- это метод расширения IEnumerable<T>.Count()
.
Хотя оба подхода достигают такого же результата, однако, являются более предпочтительными, чем другие? (Возможно некоторое различие в производительности?)
'Enumerable.Count' имеет то преимущество, что вы можете изменить тип последовательности позже, не нарушая код. Но обратите внимание, что 'Any' лучше, так как' Count() 'перечисляет всю последовательность, если это не коллекция, тогда как' Any' останавливается в первом элементе. Это также более читаемо. –
@TimSchmelter, но у него есть недостаток, если вы не измените тип последовательности :) –
@lazyberezovsky: Единственным недостатком является то, что он часто используется, даже если 'Any' будет лучше (см. Мое редактирование). –