|
Модераторы: gambit |
|
TheRam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 6.2.2014 Репутация: нет Всего: нет |
Здравствуйте форумчане.
Вот начал изучать linq и придумал себе задачу, для практики и в ней же застрял: Есть класс Product с полями ID и Money Есть два List<Product> list1, list2 Как с помощью linq to object получить набор данных вида ID,list1.Money, list2.Money из list1 и list2 у которых ID равны, но различаются по полю Money и list1.ID нет в list2 (list2.Money в данном случае установить в 0)? Первую часть с одинаковыми ID, но разными суммами я сделал, а вот как сделать выборку данных, которых нет в list2 с той же проекцией, как и в первой части, что бы их объединить - не получается. |
|||
|
||||
Certain |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
Если я правильно понял Вас
Это сообщение отредактировал(а) Certain - 6.2.2014, 20:48 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
TheRam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 6.2.2014 Репутация: нет Всего: нет |
Спасибо большое, думал не в том направлении, шел по пути объединения трех под запросов.
Но есть еще один вопрос: в оригинале у меня вместо int ID у меня long ID и после выполнения запроса, у меня выводится правильные результаты (9 шт) и еще 128 каких-то данных, с ID = -2147483648 у всех 128 элементов. Вопрос: что это такое и почему их получается 128, когда элементов для сравнения в каждом list > 10 000? Это сообщение отредактировал(а) TheRam - 7.2.2014, 08:51 |
|||
|
||||
Certain |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
Думаю Вам лучше сюда исходник скинуть...
Проблема может быть 1. В самом списке. 2. В классе Product. 3. В коде, который находится после инициализации списков и до вызова linq запроса. ID = -2147483648... диапазон типа System.Int32 от -2147483648 до 2147483647 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
|||
|
||||
TheRam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 6.2.2014 Репутация: нет Всего: нет |
Спасибо большое, напоминание диапазона int32 навело на мысль о потери данных при преобразовании типов, что и было. Сначала поле ID у меня было int, а после обноружил, что нужен long, в результате в одном месте получилось преобразование из long в int, а потом обратно в long Теперь все работает как надо
А можно еще вопросик: а при использовании list1.Except(list2) можно задать похожую проекцию, как в случае первого варианта? |
|||
|
||||
Certain |
|
||||
Бывалый Профиль Группа: Участник Сообщений: 235 Регистрация: 18.6.2008 Где: Moscow Репутация: нет Всего: 4 |
Да, можно, но придётся писать компаратор:
и сам запрос:
Это сообщение отредактировал(а) Certain - 7.2.2014, 14:07 --------------------
Работа программиста и шамана имеет много общего - оба боpмочyт непонятные слова, совершают непонятные действия и не могут объяснить, как оно работает. |
||||
|
|||||
TheRam |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 6.2.2014 Репутация: нет Всего: нет |
Спасибо большое!
|
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |