Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
.NET 4.x

Непонятка с LINQ и поиском по List<T>

28.11.2017, 21:28. Показов 4841. Ответов 70
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Trees
{
    public bool HaveRoots { get; set; }
}
 
    class Program
    {
        static void Main(string[] args)
        {
            List<Trees> trees = new List<Trees>();
            Trees oneTree = new Treees(){HaveRoots = true};
 
            if (trees.Any(t => t.HaveRoots != oneTree.HaveRoots))
            {
                Console.WriteLine("Деревко подрезали с корнем");
            }
            Console.ReadLine();
        }
    }
Почему Any() "не может подрезать деревко"? (условие не выполнено без выброса исключений или ещё чего)

Добавлено через 1 минуту
Интересует логика программиста, создавшего Any()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.11.2017, 21:28
Ответы с готовыми решениями:

Linq преобразование List<List<double>> в List<Array>
Доброго времени суток, данный код нужно преобразовать linq выражениями и дописать выборку из List&lt;List&lt;double&gt;&gt;. Таким...

Непонятка наследования интерфейсов в list
Проблему лучше опишу на &quot;пальцах&quot;: Скажем есть интерфейс IMyInterface. Его реализует класс MyClass. Естественно конструкция...

Работа с List<> , linq и БД
List&lt;DataTable&gt; listOFTables = new List&lt;DataTable&gt;(); DataTable dt = new DataTable(); public DataTable...

70
Эксперт .NET
 Аватар для Usaga
14753 / 9528 / 1364
Регистрация: 21.01.2016
Сообщений: 35,952
29.11.2017, 17:30
Студворк — интернет-сервис помощи студентам
skilllab, "семантика" метода выражает то, что он делает. Тут всё честно. Если бы он делал то, что вам надо, то имел бы имя типа "AnyInNonEmpty" или как-то так.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
29.11.2017, 18:24  [ТС]
Usaga, ещё раз. Я увидел вашу точку зрения ранее в сообщениях. Всё понял. Я согласен с вами и со всеми в безошибочности выполнения метода исходя из исходников.

Об остальном, не касающимся исходного кода методов, вся остальная тема.

Добавлено через 35 минут
Дальше.
Т.е. как для "Any" из... пустой коллекции так норм. А как
C#
1
var eee = trees.First();
так сразу эксепшн. Сразу накосяяячил.
Кароч психану))) пойду гденить микрософту напишу про Any для пустой коллекции. Всё.

Добавлено через 57 секунд
Где мой
Цитата Сообщение от Usaga Посмотреть сообщение
"AnyInNonEmpty"
0
Эксперт .NET
 Аватар для Usaga
14753 / 9528 / 1364
Регистрация: 21.01.2016
Сообщений: 35,952
29.11.2017, 19:35
skilllab, First() возвращает первый попавшийся элемент, который быть должен. Название говорит само за себя "Первый". В пустой коллекции не может быть "первого" элемента, вот мы и получаем исключение.

А "Есть ли соответствующий" говорит сам за себя. Исходники тут не причём. Только здравый смысл. Вы спрашиваете у метода "есть в коллекции элемент подпадающий под критерии". Этот вопрос не подразумевает информацию о других элементах и вообще любую другую информацию.

В общем, если вы отлючите своё "воображение" и подключите здравый смысл, то внезапно окажется, что методы-расширения LINQ логичны и понятны без всяких исходников.
1
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
29.11.2017, 20:36  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
что методы-расширения LINQ логичны и понятны
Я хоть в теме новичков, но не совсем же нуб. Есть просто вещи, которыми не пользуешься, но знаешь что они есть. А в момент использования может открываться смысл.

Повторю в ... пятый раз. Мне ясна ваша точка зрения. Хватит мне её показывать и обосновывать)))

Добавлено через 52 секунды
Цитата Сообщение от Usaga Посмотреть сообщение
В общем, если вы отлючите своё "воображение"
Если я это сделаю, то мне только кроссворды сидеть разгадывать, а не кодить или тем более работать.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
29.11.2017, 20:55
skilllab, кто-то не умеет в bool и унификацию. А все ваши умозаключения мне напоминают его
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
29.11.2017, 21:30  [ТС]
Wolfdp, ну не всё ж студентам задачки решать)) можно и потрепаться
0
29.11.2017, 21:44

Не по теме:

Цитата Сообщение от skilllab Посмотреть сообщение
а не кодить или тем более работать
я думал как-то наоборот может происходить:D

0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
29.11.2017, 21:46  [ТС]
программирование - это хобби и чуть больше. Специальность и профессия совершенно другие. Но, слава богу не гуманитарий))))
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
30.11.2017, 04:50
Цитата Сообщение от skilllab Посмотреть сообщение
можно и потрепаться
Вот тебе реальная тема для размышления -- почему в Linq для IEnumerable нет метода ForEach?
0
Эксперт .NET
 Аватар для Usaga
14753 / 9528 / 1364
Регистрация: 21.01.2016
Сообщений: 35,952
30.11.2017, 07:06
skilllab, я без "воображения" вполне успешно уже три года работаю программистом.

За почти два года моего присутствия на этом форуме вы первый, кто возбудился против метода Any(). Остальным что его имя, что его логика кажутся вполне привычными тому, что люди видят в реальной жизни (что в пустом ящике ноль ключей "на 20").

Как бы вы назвали данный метод с сохранением его логики? И как бы вы назвали метод, который делает так, как вам надо? Или "вы мою точку зрения уже поняли"?
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
30.11.2017, 08:12  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
я без "воображения" вполне успешно уже три года работаю программистом
Нисколько не сомневаюсь в вашей успешности, глубине познаний и прочее. Я и не говорил, что для программиста нужно воображение))) По-моему, даже наоборот. Есть законы, придерживаясь которых ты получишь работоспособное ПО. Их нарушение или неправильное использование обычно приводят к "глюкам". Как и выдумывание велосипедов, использование не по назначению.
С другой стороны, кто то же придумал паттерны? Посидел, повоображал как всё и к чему, да и структуризировал.

Цитата Сообщение от Usaga Посмотреть сообщение
что его логика кажутся вполне привычными тому
Опять!?!?! Опять!?!? )))
Цитата Сообщение от skilllab Посмотреть сообщение
А вот вы мне уже вторую страницу пытаетесь доказать что "некой проблемы нет". и я с вами (с другими, со всеми) согласен проблемы нет... согласен - проблемы в исходниках нет. Ладушки?
--------------------------------
Цитата Сообщение от Usaga Посмотреть сообщение
который делает так, как вам надо?
упёртый? ))) я тоже. Сообщение №12.

Цитата Сообщение от Wolfdp Посмотреть сообщение
почему в Linq для IEnumerable нет метода ForEach
Эмм...так вроде благодаря этому IEnumerable и есть вообще ForEach.
А в самом LINQ вроде ж полно переборов. Тот же исходник Any<T>
0
Эксперт .NET
 Аватар для Usaga
14753 / 9528 / 1364
Регистрация: 21.01.2016
Сообщений: 35,952
30.11.2017, 08:27
Цитата Сообщение от skilllab Посмотреть сообщение
упёртый? ))) я тоже. Сообщение №12.
Там только добавлен выброс исключения. Т.е. вы для всех меняет поведение метода на ваше, особенное. Меня интересовало НАЗВАНИЕ метода, которое должно это отображать.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
30.11.2017, 08:46  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Т.е. вы для всех меняет поведение метода на ваше, особенное.
Становится не интересно. Честно.
Сообщение №32 - 4 строка
Сообщение №18 - последняя строка
Сообщение №13 - первая строчка никнейма.
Цитата Сообщение от Usaga Посмотреть сообщение
Меня интересовало НАЗВАНИЕ метода
Сообщение №36 - первый блок кода.

Я так понял, что читать обсуждение вы не хотите. За сим, прошу: пожалуйста, не продолжайте)))
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
30.11.2017, 08:58
Цитата Сообщение от skilllab Посмотреть сообщение
Эмм...так вроде благодаря этому IEnumerable и есть вообще ForEach.
WAT?! У Enumerable есть метод расширения ForEach из namespase Linq?! Сразу видно, не строчил кучу обработок для списка, когда очень чешутся руки написать аля

C#
1
2
static void TaskFromLit<T>(this IEnumerable<T> source, Action<T> task, Func<T, bool> predicate) 
 => source.Where(predicate).ForEach(task);
Но либо добавлять свой ForEach, либо кастовать к List, либо же каноничный foreach(var item in list). К слову... https://blogs.msdn.microsoft.c... s-foreach/
0
Эксперт .NET
 Аватар для Usaga
14753 / 9528 / 1364
Регистрация: 21.01.2016
Сообщений: 35,952
30.11.2017, 08:58
Цитата Сообщение от skilllab Посмотреть сообщение
Я так понял, что читать обсуждение вы не хотите. За сим, прошу: пожалуйста, не продолжайте)))
Могли бы одним постом на всё ответить, чтобы не перечитывать всю тему.

Не по теме:

Цитата Сообщение от skilllab Посмотреть сообщение
Сообщение №13 - первая строчка никнейма.
Вот это вообще не понял.



Можно поднять весь список LINQ-расширений и оценить все на адекватность.
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
30.11.2017, 09:17  [ТС]
Wolfdp, не строчил. Не вникал в IEnumerable и не использовал его имплементацией.
Цитата Сообщение от Wolfdp Посмотреть сообщение
К слову...
Чувак написал метод расширения и показывает почему именно этот метод, какая от него польза, и типа несогласные делайте как хотите, хоть своё расширение. И?)) Вы сколько за время работы программистом написали своих методов расширений? Тоже постите их на msdn? или хабре

Добавлено через 1 минуту
Кусок вашего кода стал понятен.
Цитата Сообщение от skilllab Посмотреть сообщение
почему в Linq для IEnumerable нет метода ForEach
Этот вопрос НЕ понятен.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
30.11.2017, 09:24
Цитата Сообщение от Usaga Посмотреть сообщение
Меня интересовало НАЗВАНИЕ метода, которое должно это отображать.
Цитата Сообщение от skilllab Посмотреть сообщение
enumerable.Has
Чушь. У нас в коде не переменная "ящик", а "ключи". Если абстрагироватся: items (элементы). По вашей логики должно элементы.Имеют(УсловиеДляЄлемента) У нас элемент не имеет проверку, а хотя бы один элемент соответствует условию. Например

C#
1
2
var i = 0;
imtes.Any(x => x.Field == 0 || i++ > 5);
ну и имеют - have

Добавлено через 6 минут
Цитата Сообщение от skilllab Посмотреть сообщение
Не вникал в IEnumerable и не использовал его имплементацией.
О время... любой в интернете может прийти и сказать "я не вникал в либу, но в ней явно не правильно обозван метод". Серьезно?! Прикинь такое заявить на тусовке физиков "я не вникал в ваши формулы, но вместо постоянной g правильнее использовать мою букву, ибо так понятней". Или в матиматике вместо ∑ использовать S, ведь suma-же, а то непонятно!
0
 Аватар для skilllab
296 / 236 / 58
Регистрация: 03.02.2011
Сообщений: 2,051
Записей в блоге: 1
30.11.2017, 09:34  [ТС]
Цитата Сообщение от Wolfdp Посмотреть сообщение
У нас в коде не переменная "ящик", а "ключи"
C#
1
2
3
4
if(ящик.Имеет(ключ=>!ключ.На20))
{
//В случае если ящик не null и в ящике НЕ найден ключ (ящик не имеет ключа на 20), то входим в блок
}
Цитата Сообщение от Wolfdp Посмотреть сообщение
ну и имеют - have
это да.
------------
Цитата Сообщение от Wolfdp Посмотреть сообщение
"я не вникал в либу, но в ней явно не правильно обозван метод". Серьезно?!
В смысле "не вникал"? На первой странице темы прям ссылку дали на исходник.
Ещё раз:
Цитата Сообщение от Wolfdp Посмотреть сообщение
почему в Linq для IEnumerable нет метода ForEach?
Ответьте мне пожалуйста сами на свой вопрос. Я от этого поумнею)))

Не что делать, как:
Цитата Сообщение от Wolfdp Посмотреть сообщение
Но либо добавлять свой ForEach, либо кастовать к List, либо же каноничный foreach(var item in list)
А именно "почему"?
0
907 / 664 / 318
Регистрация: 23.10.2016
Сообщений: 1,543
30.11.2017, 09:48
Цитата Сообщение от skilllab Посмотреть сообщение
А именно "почему"?
При разработке методов LINQ руководствовались принципами парадигмы функционального программирования, согласно которой, вызов функции не должен давать побочных эффектов. К тому же, метод с именем ForEach есть у List<T>, что приводит к неоднозначности.
0
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
30.11.2017, 09:49
Цитата Сообщение от skilllab Посмотреть сообщение
Не вникал в IEnumerable
Цитата Сообщение от skilllab Посмотреть сообщение
В смысле "не вникал"?
...

Цитата Сообщение от skilllab Посмотреть сообщение
Ответьте мне пожалуйста сами на свой вопрос. Я от этого поумнею)))
Цитата Сообщение от skilllab Посмотреть сообщение
Я так понял, что читать обсуждение вы не хотите.
Цитата Сообщение от Wolfdp Посмотреть сообщение
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2017, 09:49

List<>[] перевести в [][] используя Linq
Как перевести массив списков в массив массивов 1 строчкой?

Как значения LINQ поместить в List
В общем есть метод, туда попадают шесть значений LINQ запросом... как мне эти значения засунуть в List? ...

Добавить результат LINQ запроса в конец List<>
Имеется Linq запрос возвращающий несколько строковых значений. Есть List&lt;string&gt; который уже содержит несколько элементов Как результат...

Запрос LINQ к List, как выбрать определенный элемент из списка
Подскажите как выбрать определенный элемент из списка? public class PostTarif { public double Weight {...

LINQ при привязке List<string[]> к DataGrid.DataContext через IBindingList
Приветствую сообщество. Что неправильно в выражении LINQ, приведенном ниже ? Дебаггер показывает что X_loc прекрасно формируется, но...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru