powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как определить индекс найденной строки?
25 сообщений из 71, страница 2 из 3
Как определить индекс найденной строки?
    #38240497
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloperОпять давишь лбом стену? ) Что именно тебе там не ясно?Не ясно, на фиг ты постишь бессмысленные сообщения, если понимаешь, что ТС-у нужно совсем другое. Тро-ло-ло что-ли?
Еще раз повторяю, для тех у кого туго с понимаем бытия :)
Мой вариант абсолютно рабочий . В случае, если нет сортировок в гриде: никаких проблем. В случае, если сортировки есть: я объяснил, как с помощью моего же варианта сделать так, что бы индекс находился корректно. Таким образом, я дал автору решение. Рабочее решение .
Внимание вопрос: как коррелирует моё рабочее решение с твоим унылым вбросом о том, что я посщю бессмысленные сообщения?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240538
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperМой вариант абсолютно рабочий . В случае, если нет сортировок в гриде: никаких проблем.Жжёшь

Правильно будет так: твой вариант рабочий, если в гриде нет ни фильтрации, ни сортировок.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240617
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloperМой вариант абсолютно рабочий . В случае, если нет сортировок в гриде: никаких проблем.Жжёшь

Правильно будет так: твой вариант рабочий, если в гриде нет ни фильтрации, ни сортировок.

А чем это не решение? Тем более, автор ничего про сортировку не писал. Это во-первых. А во-вторых, мой код рабочий и с сортировкой и фильтрацией. Разуй глаза, я показал все на примере.
Так что выбирайся уже из танка.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240630
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper, решение
Код: c#
1.
int index = dt.Rows.IndexOf(row);

это не решение, так как грид будет неправильно спозиционирован, если есть фильтр или сортировка.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240631
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper, второй твой вариант - шняга, ты сам это признал: 14229096 .
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240640
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloper, второй твой вариант - шняга, ты сам это признал: 14229096 .
Если используется сортировка. О ней автор ничего не говорил в сабже. Поэтому для вариантов простого отображения данных мой вариант нормален. Вопросы?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240643
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAcooldeveloper, решение
Код: c#
1.
int index = dt.Rows.IndexOf(row);

это не решение, так как грид будет неправильно спозиционирован, если есть фильтр или сортировка.
Включи остатки мозгов, это будет работать правильно. Через дополнителтный цикл поиска элемента.
Во-вторых, автор не говорил ни о каких сортировках. Я дал ответ на конкретный вопрос. Что там еще у автора есть - монопенисуально.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38240870
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А теперь правильный ответ. :-)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
   
            var table = new DataTable();

            var index = table.DefaultView
                .Cast<DataRowView>()
                .FirstIndex(r => ((int)r["id"]) == 12345);

    ............................................

    public static class EnumerableHelper
    {
        public static int FirstIndex<T>(this IEnumerable<T> src, Func<T, bool> match)
        {
            int result = 0;
            foreach (var item in src)
            {
                if (match(item))
                    return result;
                result++;
            }
            return -1;
        }
    }
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241013
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА теперь правильный ответ. :-)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
   
            var table = new DataTable();

            var index = table.DefaultView
                .Cast<DataRowView>()
                .FirstIndex(r => ((int)r["id"]) == 12345);

    ............................................

    public static class EnumerableHelper
    {
        public static int FirstIndex<T>(this IEnumerable<T> src, Func<T, bool> match)
        {
            int result = 0;
            foreach (var item in src)
            {
                if (match(item))
                    return result;
                result++;
            }
            return -1;
        }
    }



1. Зачем гавнокастинг?
2. Зачем гавнохелпер? Any ведь есть.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241114
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper1. Зачем гавнокастинг?Что-то я не увидел IEnumerable<DataRowView>. Может плохо смотрел? :-)
Код: c#
1.
2.
3.
4.
5.
public class DataView : MarshalByValueComponent, IBindingList,
   IList, ICollection, IEnumerable, ITypedList, ISupportInitialize
{
    ....
}


cooldeveloper2. Зачем гавнохелпер? Any ведь есть.Вроде как задача определить индекс записи?

зы: Предлагаю ввести мараторий на выражения гавноXXX . Не нравятся...
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241118
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper1. Зачем гавнокастинг?
Или это про это?
Код: c#
1.
((int)r["id"]) == 12345


Ну пусть преобразовывается иначе. Это просто пример...
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241120
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КЧто-то я не увидел IEnumerable<DataRowView>. Может плохо смотрел? :-)
Не понял, какой IEnumerable? Я о (int)r["id"]) == 12345 vs r["id"]) == 12345 :)

Алексей КВроде как задача определить индекс записи?
Ну, ты ж ищешь первый элемент и ретурнишься. Any делает тоже самое.

Алексей Кмараторий
Ок.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241122
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КВроде как задача определить индекс записи?
Ну, ты ж ищешь первый элемент и ретурнишься. Any делает тоже самое.Только при этом возвращает true/false. А нужен индекс.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241123
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУr["id"]) == 12345А что, такое будет работать?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241145
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КТолько при этом возвращает true/false. А нужен индекс.
Тьфу ты, заговорился. Конечно речь о First, я думал, ты поймешь.

Алексей КМСУ(r["id"]) == 12345А что, такое будет работать?
Разумеется, почему нет?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241154
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КТолько при этом возвращает true/false. А нужен индекс.
Тьфу ты, заговорился. Конечно речь о First, я думал, ты поймешь.А зачем нам ссылка на элемент? Нам нужен его индекс (см название темы :-) ), чтобы потом по нему установить текущую запись. Иначе будет лишний поиск по списку.
МСУАлексей Кпропущено...
А что, такое будет работать?
Разумеется, почему нет?Ну ладно. :-)
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241197
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КА зачем нам ссылка на элемент? Нам нужен его индекс (см название темы :-) ), чтобы потом по нему установить текущую запись. Иначе будет лишний поиск по списку.
Не понял, откуда там будет лишний поиск?
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241216
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КА зачем нам ссылка на элемент? Нам нужен его индекс (см название темы :-) ), чтобы потом по нему установить текущую запись. Иначе будет лишний поиск по списку.
Не понял, откуда там будет лишний поиск?Ну покажи пример, как имея ссылку на нужную запись, сделать её текущей в BindingSource. Кроме как myBindingSource.Position = itemIndex , других способов вроде нет.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241221
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К,

Код: c#
1.
int index = table.Rows.IndexOf(table.DefaultView.Cast<DataRowView>().First(item => (int)item["ID"] == 123).Row);



Вот и всё, никаких циклов и левых экстеншен хелперов.

P.S. Ну если IndexOf не считать "циклом", конечно. По сути это рекурсия.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241241
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей К,

Код: c#
1.
int index = table.Rows.IndexOf(table.DefaultView.Cast<DataRowView>().First(item => (int)item["ID"] == 123).Row);



Вот и всё, никаких циклов и левых экстеншен хелперов.

P.S. Ну если IndexOf не считать "циклом", конечно. По сути это рекурсия.

.First - первый цикл.
.IndexOf - второй цикл.

Оно конечно экономия на спичках, но всё равно неприятно.

Мой прикладной код короче и понятнее (не считая расширяющего метода, но это системный код).

И результат опять неправильный. Нас интересует индекс записи в DataView а не в DataTable по описанным выше причинам (локальная фильтрация и сортировка).
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241242
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. Ну если IndexOf не считать "циклом", конечно. По сути это рекурсия.Про рекурсию не понял. :-)
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241245
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВот и всё, никаких цикловУ меня в прикладном коде циклов тоже нет. Всё функционально.
МСУи левых экстеншен хелперов.Не самоцель. В каждом нормальном проекте есть самописный системный слой.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241288
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К.First - первый цикл.
Это такой же цикл, как и твой FirstIndex

Алексей К.IndexOf - второй цикл.
Не совсем цикл, рекурсия. Но суть такая же.

Алексей КОно конечно экономия на спичках, но всё равно неприятно.
Я уж лучше в одну строчку кода воспользуюсь штатным DataTable.Rows.IndexOf(DataRow), чем буду писать вот этот ... код :)
... код
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public static class EnumerableHelper
    {
        public static int FirstIndex<T>(this IEnumerable<T> src, Func<T, bool> match)
        {
            int result = 0;
            foreach (var item in src)
            {
                if (match(item))
                    return result;
                result++;
            }
            return -1;
        }
}



Алексей КМой прикладной код короче и понятнее (не считая расширяющего метода, но это системный код).
А почему это ты экстеншен не считаешь? Лихо, однако :) Насчет понятности кода, это смотря с какой стороны посмотреть.

Алексей КИ результат опять неправильный. Нас интересует индекс записи в DataView а не в DataTable по описанным выше причинам (локальная фильтрация и сортировка).
Запарил ты со своей сортировкой :)

Алексей КМСУP.S. Ну если IndexOf не считать "циклом", конечно. По сути это рекурсия.Про рекурсию не понял. :-)
IndexOf - это рекурсия.
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241295
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КИ результат опять неправильный. Нас интересует индекс записи в DataView а не в DataTable по описанным выше причинам (локальная фильтрация и сортировка).
Запарил ты со своей сортировкой :)

Код: c#
1.
var index = table.DefaultView.Cast<DataRowView>().Select((item, index) => new { id = (int)item["ID"], index }).Single(search => search.id == 123).index;



Всё четко и понятно :)
...
Рейтинг: 0 / 0
Как определить индекс найденной строки?
    #38241315
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМСУпропущено...

Запарил ты со своей сортировкой :)

Код: c#
1.
var index = table.DefaultView.Cast<DataRowView>().Select((item, index) => new { id = (int)item["ID"], index }).Single(search => search.id == 123).index;



Всё четко и понятно :)Но не компилируется. :-)
...
Рейтинг: 0 / 0
25 сообщений из 71, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как определить индекс найденной строки?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]