Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
Есть список адресов Есть группы, в которые эти адреса могут входить. Адрес может входить в несколько групп. Когда добавляем в группу адрес, хочется показывать адреса, которые не входят в данную группу. Ничего не придумал лучше, как написать монструальный код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Все работает, но foreach... как то смущает. Не по фэн шую))) Хотя записей не много, ничего не тормозит. Но как вычесть из одного множества, по определенным признакам другое, не пойму( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 12:41 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
Наверное совсем мало инфы выложил. вот получение GetGroup Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 12:44 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
asdor Код: c# 1. 2. 3. 4. 5. заставило меня задуматься о смысле жизни... может вот это поможет? https://www.google.ru/?q=linq exclude one list from another ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 14:13 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
hVostt, foreach и на меня наводит грусть. Я не знаю, как уточнить поиск, что бы найти нужное. Но в приведенном, не совсем то что мне требуется. Видимо не до конца проблему описал. Есть таблицы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Один и тот же адрес, может быть в нескольких группах 1:М Все свел к таким ModelView Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Теперь требуется показать, все имеющиеся адреса (GroupEmailCus) которых нет в данной группе. Если делать, как в приведенных примерах, то будет не до конца верно. Попробую на пальцах. Есть группы: 1 Асфальт 2 Бетон Есть адреса: 1 a@some.com 2 b@some.com 3 c@some.com В Асфальт вносим 1 a@some.com 2 b@some.com В Бетон вносим 1 a@some.com 3 с@some.com В MailToGroup получим 1 1 1 2 2 1 2 3 Теперь хотим добавить адрес в Асфальт Значит надо показать всех, кто в нем не содержится Т.е. 3 c@some.com Но в при вычитании, мы получим еще и a@some.com, которое привязано, к Бетону Т.е. надо не просто из eMailAll вычесть eMailGrp, а убрать из eMailAll все записи, с EMailID имеющимися в eMailGrp Боюсь опять не ясно объяснил, но я старался) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 14:53 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
hVostt, Нашел вариант с подзапросом. Не знал как его на Linq реализовать. Но по сути, это ж, тот же foreach... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 14:57 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
asdor, дано AllMails -- коллекция все ящики MailToGroups -- коллекция соединения группа-ящик и нужная группа: CustomGroupID = 1 надо получить все мейлы, не в группе 1, так? Код: c# 1. 2. 3. 4. в query у тебя все ящики, которых нет в группе 1. если надо зацепить еще те ящики, которых нет ни в одной группе, тогда так: Код: c# 1. 2. 3. 4. 5. вуаля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 15:07 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
asdor, ещё прощё отак уот можно сделать и обойтись без дистинктов там всяких Код: c# 1. 2. 3. на первый взгляд тот же подзапрос в переборе, но ет тока на первый взгляд ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 15:16 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
hVostt, Ну чувствовал, что где то рядом))) Очень похоже, сейчас попробую. Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 15:25 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
hVosttasdor, ещё прощё отак уот можно сделать и обойтись без дистинктов там всяких Код: c# 1. 2. 3. на первый взгляд тот же подзапрос в переборе, но ет тока на первый взгляд Верная подсказка. Про дистинг. Я и забыл. И это предложение отрабатывает на ура. Единственно что, заметно на глаз, тормоз( Гораздо медленнее предыдущего варианта, и медленнее foreach (Хотя в тех вариантах забыл про дистинг, и там были одинаковые адреса, собранные из других групп) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 15:50 |
|
||
|
Исключить из выборки записи другой выборки
|
|||
|---|---|---|---|
|
#18+
asdorЕдинственно что, заметно на глаз, тормоз( странно вариант с Any() при отображении в СУБД превращается в весьма эффективный запрос. просто у тебя MailToGroups видимо не материализованный IEnumerable (сделай ToList) или пробуй вот ето: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. проверь мож побыстрее будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.06.2014, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38675579&tid=1357218]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 361ms |

| 0 / 0 |
