Alvin Seville
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
1

В чем разница между Where и FindAll?

04.09.2017, 10:51. Показов 3964. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Различие функций Where и FindAll лишь в том, что первая возвращает последовательность, а вторая массив?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.09.2017, 10:51
Ответы с готовыми решениями:

В чем разница между видами Паскаля?
Turbo Pascal ,Pascal ABC,Free Pascal, PascalABC.NET. Чем они отличаются и какой лучше изучать...

В чем разница между set of и array of?
в чем разница set of и array of

В чем разница между \n и \r
Здравствуйте. Собственно вопрос в название темы. Объясните, в чем разница между /n и /r?

В чем разница между С и С++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы а в С их нету ?

3
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32830 / 21168 / 8147
Регистрация: 22.10.2011
Сообщений: 36,429
Записей в блоге: 8
04.09.2017, 11:38 2
Лучший ответ Сообщение было отмечено Volobuev Ilya как решение

Решение

Нет. Разница - в том, что FindAll - это метод расширения для Array, а не метод Linq-а, соответственно, он сразу выполняет выборку и занесение результатов в массив. А Where - выполняется "лениво", то есть, если написать:
Pascal
1
2
3
4
5
6
begin
  var a := Arr(1, 2, 3, 4, 5, 6, 7);
  
  var v := a.Where(x -> x mod 2 = 0);
  Print(v.Take(2));
end.
, то реально проход по массиву a будет не в 4-ой строке, а в 5-ой, при вызове Take, и закончится он тогда, когда будут найдены первые 2 элемента, удовлетворяющие условию фильтрации, потому что больше не требуется. А FindAll будет ходить по всему массиву и фильтровать его сразу же в момент вызова. И занесет в результирующий массив все элементы, удовлетворяющие условия, независимо от того, сколько их на самом деле нужно пользователю. И только потом Take вытащит из кучи результатов (если массив A будет большим - то и V может быть очень большим) два первых.
1
Alvin Seville
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 9
04.09.2017, 12:39  [ТС] 3
Хм, то есть все же лучше использовать Where?
0
Администратор
Эксперт .NET
16999 / 13357 / 5212
Регистрация: 17.03.2014
Сообщений: 27,312
Записей в блоге: 1
04.09.2017, 15:10 4
Volobuev Ilya, лучше использовать то что подходит для задачи. Нужны все результаты сразу - используем FindAll. Нужны результаты по одному и устраивает отложенное исполнение - используем Where.
1
04.09.2017, 15:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.09.2017, 15:10
Помогаю со студенческими работами здесь

В чем разница между [] и * ?
Думал, что ни в чем, но когда попытался сделать так: (в файле 1) char lc; в файле 2: extern...

В чем разница между С++ и С?
Чем отличается С и С++, кроме того что С++ есть ООП?

В чем разница между . и ,
Вот столкнулся с таким вопросом вчем разница между . и , Привер <? echo...

В чем разница между X x; и X x()?
Корректный ли этот ответ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru