Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по поиску в List<MyClass> / 15 сообщений из 15, страница 1 из 1
06.08.2013, 10:12
    #38356122
aleksey_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
Всем привет!
Помогите плизз решить следующую задачку.

Есть список List<MyClass> с около миллионом элементов.
MyClass имеет структуру: string Name1, string Name2, string Name3
Мне нужно найти Name3 в списке List, где Name1 = "яблоко", а Name2 = "груша"
...
Рейтинг: 0 / 0
06.08.2013, 10:32
    #38356151
EDUARD SAPOTSKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
List<MyClass> list = new List<MyClass>();
var obj = list.Where(o => o.Name1 == "яблоко" && o.Name2 = "груша" ).SelectFirst().Name3;
...
Рейтинг: 0 / 0
06.08.2013, 10:35
    #38356156
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
EDUARD SAPOTSKI, List<T>.Find Method .
...
Рейтинг: 0 / 0
06.08.2013, 10:38
    #38356167
aleksey_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
EDUARD SAPOTSKIList<MyClass> list = new List<MyClass>();
var obj = list.Where(o => o.Name1 == "яблоко" && o.Name2 = "груша" ).SelectFirst().Name3;

нет. ошибка.
SelectFirst не может выполниться для данного объекта.
...
Рейтинг: 0 / 0
06.08.2013, 10:52
    #38356189
EDUARD SAPOTSKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
aleksey_sqlEDUARD SAPOTSKIList<MyClass> list = new List<MyClass>();
var obj = list.Where(o => o.Name1 == "яблоко" && o.Name2 = "груша" ).SelectFirst().Name3;

нет. ошибка.
SelectFirst не может выполниться для данного объекта.
Не проснулся еще... не SelectFirst() а просто First() и два равно перед грушей...
глять еще как skyANA предложил...
И вообще почитай ченить про linq...
...
Рейтинг: 0 / 0
06.08.2013, 10:59
    #38356200
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
EDUARD SAPOTSKIНе проснулся еще...Теперь понятно, откуда Where в выражении
...
Рейтинг: 0 / 0
06.08.2013, 11:18
    #38356242
EDUARD SAPOTSKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
skyANAТеперь понятно, откуда Where в выражении
А че не так с Where? Нормально вроде работает...
...
Рейтинг: 0 / 0
06.08.2013, 11:22
    #38356248
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
EDUARD SAPOTSKI,
Посмотри перегрузку FirstOrDefault.
...
Рейтинг: 0 / 0
06.08.2013, 11:39
    #38356280
EDUARD SAPOTSKI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
ЕвгенийВПосмотри перегрузку FirstOrDefault.
Че мне смотреть? Пусть ТС смотрит, по мне так с Where прикольнее
...
Рейтинг: 0 / 0
06.08.2013, 11:49
    #38356298
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
EDUARD SAPOTSKIskyANAТеперь понятно, откуда Where в выражении
А че не так с Where? Нормально вроде работает...
1.
Код: c#
1.
list.Where(o => o.Name1 == "яблоко" && o.Name2 == "груша").First()

заменяется на
Код: c#
1.
list.First(o => o.Name1 == "яблоко" && o.Name2 == "груша")

2. Код с First() вылетит с InvalidOperationException (Sequence contains no elements), если в списке нет подходящего элемента;
...
Рейтинг: 0 / 0
06.08.2013, 11:50
    #38356300
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
EDUARD SAPOTSKIЕвгенийВПосмотри перегрузку FirstOrDefault.
Че мне смотреть?Чтобы знать, что есть Find() и FirstOrDefault()
...
Рейтинг: 0 / 0
06.08.2013, 11:59
    #38356317
aleksey_sql
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
skyANAEDUARD SAPOTSKIпропущено...

А че не так с Where? Нормально вроде работает...
1.
Код: c#
1.
list.Where(o => o.Name1 == "яблоко" && o.Name2 == "груша").First()

заменяется на
Код: c#
1.
list.First(o => o.Name1 == "яблоко" && o.Name2 == "груша")

2. Код с First() вылетит с InvalidOperationException (Sequence contains no elements), если в списке нет подходящего элемента;

СПАСИБО БОЛЬШОЕ! Получилось :)
...
Рейтинг: 0 / 0
06.08.2013, 12:02
    #38356322
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
aleksey_sql, не за что.

Код: c#
1.
list.Find(o => o.Name1 == "яблоко" && o.Name2 == "груша")

будет чуть быстрее и не будет вылетать с исключением, если элемента в списке не окажется.
...
Рейтинг: 0 / 0
06.08.2013, 13:35
    #38356527
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
skyANAaleksey_sql, не за что.

Код: c#
1.
list.Find(o => o.Name1 == "яблоко" && o.Name2 == "груша")

будет чуть быстрее и не будет вылетать с исключением, если элемента в списке не окажется.
Тут легко распараллеливается. И тогда AsParallel().FirstOrDefault будет много быстрее чем Find() на многоядерных машинах.
...
Рейтинг: 0 / 0
06.08.2013, 13:57
    #38356578
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по поиску в List<MyClass>
ЕвгенийВskyANAaleksey_sql, не за что.

Код: c#
1.
list.Find(o => o.Name1 == "яблоко" && o.Name2 == "груша")

будет чуть быстрее и не будет вылетать с исключением, если элемента в списке не окажется.
Тут легко распараллеливается. И тогда AsParallel().FirstOrDefault будет много быстрее чем Find() на многоядерных машинах.С чего вдруг много быстрее?
У меня на Core i7 Find() и AsParallel().FirstOrDefault() на миллионе элементов выдают одинаковые результаты.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вопрос по поиску в List<MyClass> / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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