Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236

Коллекция, выполнить действие с переменной, а потом проверить на условие

20.08.2015, 00:34. Показов 1572. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Смотрите, есть List<string> это допустим ссылки, мне надо во первых удалить из них адрес сайта с http, короче http://example.com потом с тем что останется выполнить Trim, а потом проверить удовлетворяет ли это нескольким условиям, допустим !string.IsNullOrEmpty и есть ли данная запись в другом списке

если делать через расширения к сожалению это делается в 2 метода Select, потом Where, а точнее еще 3-й метод - Except придется использовать.

может есть какой то один метод (расширенный), способный за раз это сделать или может можно как то через LINQ можно?

или только по старинке через for / foreach
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.08.2015, 00:34
Ответы с готовыми решениями:

Коллекция, выполнить какое-нибудь действие со всеми элементами
Меня интересует расширенный метод. Допустим я знаю что можно произвести выборку из коллекции через расширенный метод Where, в одну...

Условие: если строка пустая - выполнить действие
Здравствуйте, если можете, помогите создать такое условие: &quot;Условие: если строка пустая - выполнить действие...&quot;, на основе...

Выполнить действие в зависимости от значения переменной
Товарищи, помогите найти ошибку. Код: #include &lt;iostream&gt; #include&lt;windows.h&gt; using namespace std; void one(); void...

8
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
20.08.2015, 01:24
..эмм, а Select и Where -- это разве не линки?!

А вообще что смущает? LINQ один фиг отрабатывают, когда из IEnumerable приводятся к List/Array или foreach'ем обрабатываются, так что за кучу линков можно не сильно беспокоиться.

А если ну прям принципиально без вызова многих методов, можно обойтись (from item in list where (condition) && (condition2) ... select item).ToList();
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
20.08.2015, 10:30
VLK, словесное выражение кода читать уж больно трудно. Может, напишете, что получилось с использованием
Цитата Сообщение от VLK Посмотреть сообщение
Select, потом Where, а точнее еще 3-й метод - Except
а мы попробуем как-нибудь переделать.
Не словами, а на C#.
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
20.08.2015, 11:12  [ТС]
Anderok, tezaurismosis, беда использования этих 3-х методов в том, как я понимаю каждый из них внутри прокручивает все элементы через цикл, получается я буду 3 раза подряд проходится циклом, тут уже целесообразнее это сделать через for / foreach за один проход, вот я и подумал может есть какой то один метод что бы за один проход..

Добавлено через 8 минут
я подумал может можно через LINQ, что то типа:
C#
1
2
3
4
5
var linq = from item in list where 
string.IsNullOrEmpty( item.Replace("http://example.com", "").Trim() ) == false
and
Base.IndexOf( item.Replace("http://example.com", "").Trim() ) == -1
select item.Replace("http://example.com", "").Trim();
Возможно написал с ошибками но не суть, тут я вроде как за 1 проход все делаю, но получается 3 раза делаю Replace и Trim

голубятня какая то одним словом получается.

Добавлено через 1 минуту
А запись типа:
C#
1
2
3
4
5
var linq = from item.Replace("http://example.com", "").Trim() in list where 
string.IsNullOrEmpty( item ) == false
and
Base.IndexOf( item ) == -1
select item.Replace("http://example.com", "").Trim();
не пашет
что конечно очень жаль.

Ну т.е. сначала с переменной делаются все ужасные штуки и потом после этой обработки я ее обработанную сравниваю и т.д.
0
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
20.08.2015, 11:16
Лучший ответ Сообщение было отмечено VLK как решение

Решение

VLK, ну если это смущает, то в линках есть оператор let

будет что-то вроде (полу-псевдокод)

C#
1
var resultList =( from item in collection let repitem = item.Replace("http://example.com", "").Trim() where (Base.IndexOf(repItem) == -1) ... ну и так далее .... select repItem ).ToList();
1
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9673 / 4825 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
20.08.2015, 11:22
VLK, это понятно. Если будет работать слишком медленно - перепишите с помощью foreach.
Один из принципов работы LINQ - "конвейерная обработка" с последовательным применением нужных методов.
Методы в LINQ сделаны так, чтобы просто их было применять в таком "конвейере".
Поэтому ничего страшного в этих лишних прогонах нет - мы всё-таки на высокоуровневом ЯП пишем и гоняться за спичками - только своё время тратить.
Но речь не про 3 вызова item.Replace, конечно, их нужно отделить в отдельную переменную, см. выше про let.
1
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
20.08.2015, 11:32
Ну а если прям-вообще каждая микросекунда performance' а горит, то и foreach не стоит трогать. Он относительно медленней простого for(; за счет скрытого блока try { }finaly{}
1
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
20.08.2015, 11:37  [ТС]
Anderok, насчет let это уже мой косяк, не доглядел что такой оператор есть, а он у меня в записях был, с данным оператором получается делается все что я хочу.
0
 Аватар для VLK
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,236
26.08.2015, 22:31  [ТС]
Anderok, tezaurismosis, вот провел замеры на тему "что быстрее" по этому перебору, очень интересные цифры, взгляните - Список для максимально быстрого поиска по нему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.08.2015, 22:31
Помогаю со студенческими работами здесь

RichEdit просмотреть и узнать атрибут текста потом выполнить условие
Умные люди подскажите есть ли такая возможность в программе просмотреть текст в RichEdit1 и если попадается выделенная жирным строка...

Выполнить определенное действие в зависимости от знчения переменной
Добрый день. Подскажите как реализовать как я понимаю с помощью циклов. Скажем есть числа от 1 до 20 и как сделать что если переменная...

Отследить изменение значения переменной и выполнить действие
Всем доброго времени суток. Минуту назад хотел уже написать было сюда просьбу о помощи. Но поразмыслив лишнюю минуту из более часа, который...

Проверить если вполучили число из строки то выполнить какое либо действие
Всем доброго времени суток. Друзья, try { x0 = Double.parseDouble(tfx0.getText()); ...

Нужно проверить существует ли определенный объект, и после этого выполнить действие, если он есть
Доброе время суток! Возникла у меня потребность проверить существует ли объект определенный и после этого выполнить действие если он...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru