Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
258 / 229 / 56
Регистрация: 03.02.2011
Сообщений: 1,939
Записей в блоге: 1
1
.NET 4.x

Пробежка по списку с выборкой значений по условию

02.09.2014, 18:51. Показов 1421. Ответов 9
Метки нет (Все метки)

Имеется лист:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
List<String> myArray = new {"текст", /*1*/
                                                    "один",/*2*/
                                                    "текст",/*3*/
                                                    "текст 2",/*4*/
                                                    "один",/*5*/
                                                    "один",/*6*/
                                                    "текст",/*7*/
                                                    "текст",/*8*/
                                                    "один",/*9*/
                                                    "текст",/*10*/
                                                    "один",/*11*/
                                                    "один",/*12*/
                                                    "один",/*13*/
                                                    "текст",/*14*/
                                                    "текст",/*15*/
                                                    "текст"/*16*/}
Имеется предварительный код:
C#
1
2
3
4
5
6
7
8
List<Int32> indexes = new List<Int32>();
 for (int i = 0; i < myArray.Count; i++)
            {
                if (IsValidText(myArray[i]))
                {
                    indexes.Add(i-1);
                }
            }
Как из вышеозначенного листа вытянуть индексы "один", но с условием:
если пробежкой дальше по листу текст будет тот же, то его индекс пропускается.
Т.е. результат нужен такой:
C#
1
indexes = {2,4,8,10}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.09.2014, 18:51
Ответы с готовыми решениями:

Форма с выборкой по условию
Доброго времени суток форумчанам! Прошу помощи, так как сам разобраться не смог, а долг студента и...

Поле с выборкой из таблицы по ранее полученному условию
БД Автоперевозки. В заказе вводится .....и масса груза. в зависимости от массы ограничивается выбор...

Перенос значений по условию, очистка значений по условию
Необходимо 2 макроса Макрос 1 - перенос. Копировать только значения из строки 14 в строку 2...

Поиск граничных значений в массиве и вывод группы значений по условию
Здравствуйте. Запутался при решении своей же задачи. Имеется два массива чисел: 1 и 2. В каждом по...

9
29 / 28 / 18
Регистрация: 19.12.2012
Сообщений: 144
Записей в блоге: 1
02.09.2014, 18:53 2
C#
1
2
3
4
5
6
7
8
List<Int32> indexes = new List<Int32>();
 for (int i = 0; i < myArray.Count; i++)
            {
                if (IsValidText(myArray[i])&&!isValidText(myArray[i+1]))
                {
                    indexes.Add(i);
                }
            }
0
258 / 229 / 56
Регистрация: 03.02.2011
Сообщений: 1,939
Записей в блоге: 1
02.09.2014, 19:04  [ТС] 3
Iwillbeagod, неа.
Можно, конечно, ограничиться. Максимально идущее подряд "один" = 5 раз.

Добавлено через 5 минут
Блин. Не поправить сообщение.
Результат должен быть:
C#
1
indexes = {1,4,8,10}
0
foo();
885 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
02.09.2014, 19:06 4
Лучший ответ Сообщение было отмечено skilllab как решение

Решение

skilllab, так?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
List<string> myArray = new List<string>
{
    "один", "текст", "текст", "текст 2", "один",  "один", "текст",
    "текст", "один", "текст", "один", "один", "один", "текст",
    "текст", "текст"
};
bool temp = false;
var indices = myArray.Select((value, index) =>
{
    if (value == "один")
    {
        if (temp)
            return -1;
        temp = true;
        return index;
    }
    return -1;
}).Where(i => i != -1).ToArray();
foreach(var ind in indices)
    Console.WriteLine(ind);
Console.ReadKey();
2
258 / 229 / 56
Регистрация: 03.02.2011
Сообщений: 1,939
Записей в блоге: 1
02.09.2014, 19:13  [ТС] 5
rattrapper, возвратил только первый индекс
0
Заблокирован
02.09.2014, 19:23 6
skilllab, поясните закономерность выбора индексов.
0
foo();
885 / 587 / 222
Регистрация: 03.07.2013
Сообщений: 1,549
Записей в блоге: 2
02.09.2014, 19:29 7
skilllab, забыл
C#
1
temp = false
между 16 и 17 строками
0
258 / 229 / 56
Регистрация: 03.02.2011
Сообщений: 1,939
Записей в блоге: 1
02.09.2014, 19:55  [ТС] 8
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
поясните закономерность выбора индексов.
нужно вычленить из огромного листа индексы гуидов. По этим индексам разбить лист на несколько листов. В исходном листе может идти подряд несколько гуидов, а нужен только первый из нескольких. Потом уже я все полученные листы приведу в порядок)))
0
Заблокирован
02.09.2014, 20:01 9
skilllab, т.е. индексация в коде и в результате смещены специально?
2 - 5 - 9 - 11 судя по нумерации в коде, и
1 - 4 - 8 - 10 исходя из принятой от 0.
Это меня запутало
1
258 / 229 / 56
Регистрация: 03.02.2011
Сообщений: 1,939
Записей в блоге: 1
02.09.2014, 20:07  [ТС] 10
В первом сообщении я неправильно написал желаемый результат и индексацию - нуб же . Потом поправился.
А вообще да, нужен именно i-1. Для того, чтобы и гуид попал в результирующий лист.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.09.2014, 20:07

Вывести множество значений функции, удовлетворяющих условию, и подсчитать количество остальных значений
Дана целочисленная функция f(k)= K^3-25K^2+50K+1000 определена только для целых значений аргумента...

Вывести множество значений функции, удовлетворяющих условию, и подсчитать количество остальных значений
Целочисленная функция F(k)=k*k*k-25*k*k+500*k+1000 определена только для целых значений аргумента...

Сопоставлении значений списка другому списку
Доброе утро! У меня небольшая проблемка! Как на форме сопоставить список значений в зависимости от...

Отбор в таблице значений по условию четных и нечетных значений
Здравствуйте, учусь работать с таблицами значений, дали задачу, написать форму и что бы в одной тч...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.