Как зайти в Даркнет?!
25th January, 01:11
5
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
893
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
912
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4350
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Лучший способ получить количество IEnumerable
Какой самый лучший / простой способ получить количество элементов в коллекции IEnumerable без перечисления всех элементов в коллекции?
Возможно с LINQ или Lambda?
Решение зависит от того, почему вы не хотите перечислять через коллекцию.
Если это связано с тем, что перечисление коллекции может быть медленным, то нет решения, которое будет быстрее. Вы можете рассмотреть возможность использования ICollection вместо этого, если это возможно. Однако, если перечисление не является чрезвычайно медленным (например, оно считывает элементы с диска), скорость не должна быть проблемой.
Если это связано с тем, что перечисление коллекции потребует большего количества кода, то он уже был написан для вас в форме.Count() метод расширения. Просто используйте MyEnumerable.Count().
Если это потому, что вы хотите иметь возможность перечислить коллекцию после того, как вы посчитали, то .Count() метод расширения позволяет это сделать. Вы даже можете позвонить .Count() о коллекции, которую вы находитесь в середине перечисления, и она будет продолжаться с того места, где она была до подсчета. Например:
foreach (int item in Series.Generate(5))
{
Console.WriteLine(item + "(" + myEnumerable.Count() + ")");
}
даст свои результаты
0 (5)
1 (5)
2 (5)
3 (5)
4 (5)
Если это связано с тем, что перечисление имеет побочные эффекты (например, запись в disk/console) или зависит от переменных, которые могут изменяться между подсчетом и перечислением (например, чтение с диска) [N.B. Если это возможно, я бы предложил переосмыслить архитектуру, поскольку это может вызвать много проблем] тогда одна из возможностей рассмотреть чтение перечисления в прерывистое хранилище. Например:
List<int> seriesAsList = Series.Generate(5).ToList();
Все вышеперечисленное предполагает, что вы не можете изменить тип (т. е. он возвращается из библиотеки, которой вы не владеете). Если это возможно, вы можете рассмотреть возможность изменения для использования ICollection или IList (ICollection имеет более широкую область действия, чем IList), который имеет свойство Count на нем.
IEnumerable придется перебирать каждый элемент. чтобы получить полный счет. Если вам просто нужно проверить, есть ли один или несколько элементов в IEnumerable, более эффективный метод-проверить, есть ли они. Any() только проверьте, чтобы увидеть, что есть значение и не петля через все.
IEnumerable myStrings = новый List(){"one","two", "three"};
боол hasValues = myStrings.Any();
Не возможно с LINQ, как вызов .Рассчитывать(...) действительно перечисляет коллекцию. Если вы столкнулись с проблемой, в которой вы не можете повторить сбор дважды, попробуйте сделать это:
List<MyTableItem> myList = dataContext.MyTable.ToList();
int myTableCount = myList.Count;
foreach (MyTableItem in myList)
{
...
}