Продолжение: Как получить часть объекта из списка без Linq? - PullRequest
0 голосов
/ 17 декабря 2008

У меня вопрос по поводу этого вопроса . Я разместил ответ там, но так как он был помечен как ответ, я не думаю, что получу ответ на свой пост там.

Я использую C # framework 2.0, и я хотел бы получить некоторые данные из списка? Список является списком <>. Как могу ли я сделать это без зацикливания и делать сравнение вручную на каждом элемент списка <>?

Похоже, что ответы - это просто более элегантные способы сравнения каждого элемента Списка. Учитывая, что список не может быть отсортирован перед поиском, гарантирует ли какой-либо из методов, представленных в исходном сообщении, что они смотрят на меньшее подмножество исходного списка?

РЕДАКТИРОВАТЬ: Стоит отметить, что я здесь не пытаюсь что-либо делать. Я просто хочу знать, действительно ли решения, представленные в другом вопросе, действительно выполняют то, что просил ОП, в отношении циклического прохождения всего списка. В общем, для поиска в несортированном списке (по крайней мере, это не требуется, учитывая структуру данных), вам придется искать весь список. Тем не менее, имеет ли какое-либо решение в другом потоке базовую оптимизацию для предотвращения поиска по всему списку?

РЕДАКТИРОВАТЬ: Я действительно не получил ни одного ответа, который был бы настолько полезен, но я воздаю должное ответу, который, по крайней мере, подтвердил мое здравое убеждение. Если я увижу новый лучший ответ, я поменяю голос.

Ответы [ 4 ]

2 голосов
/ 18 декабря 2008

Если ваше требование состоит в том, чтобы быстро находить вещи в произвольной коллекции, то, возможно, список не самая лучшая структура данных для работы. :)

1 голос
/ 18 декабря 2008

Объяснил в вашей теме, что вы упомянули, что вы можете получить часть объекта из списка без LINQ.

 list = list.FindAll(yourFilterCriteria);

Объект yourFilterCriteria является Predicate и может выполнять сравнение со всеми свойством или функцией в вашем объекте, поэтому он очень настраиваемый.

    Predicate<SimpleObject> yourFilterCriteria = delegate(SimpleObject simpleObject)
    {
        return simpleObject.FirstName.Contains("Skeet") && simpleObject.Age < 30;
    };

В этом примере показано, что вы можете выполнять поиск в списке без циклического добавления рукописного ввода, и вы получите всех людей с именем скита и возрастом до 30.

1 голос
/ 18 декабря 2008

Возможно, вы захотите проверить поддержку LINQ для .Net 2.0 .

0 голосов
/ 17 декабря 2008

Если вы ищете только первое совпадение, то метод Find выполнит эту работу. Он не будет перебирать весь список, а вернет первое вхождение объекта. Однако, если вы хотите найти все из них, как именно вы ожидаете искать только подмножество данных, если они не отсортированы?

...