|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
На входе Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Он связан с помощью Entity Framework 5.0 с одноименной таблицей (СУБД MS SQL 2008). Необходимо получить список всех книг с заданными парами (Автор, Дата публикации) Пробую сделать так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Но при вызове метода получаю сообщение об ошибке: Код: c# 1.
Каким образом можно решить данную задачу? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 16:41 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Код: c# 1.
Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 16:47 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУ , Я не понимаю, как приведенный вами пример преобразовать для списка передаваемых пар {{2010-09-01, Рихтер}, {2008-08-08, Грубер}, {2013-05-05, Карли}}, чтобы получить список книг указанных авторов в соответствующие датой публикации. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 17:20 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Я тебе написал, как делать универсальный фильтр. Ну а написать сам LINQ запрос не сложно: Код: c# 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 17:26 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУ , это уже ближе к тому, что мне нужно. Но ваш код осуществляет поиск по двум несвязанным спискам, в профайлере условие поиска выглядит примерно так Код: sql 1.
А мне необходим поиск по одному списку связанных пар, т.е Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 17:57 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
predicatebuilder в цикле набираете через Or пары через And... это просто "чужой велосипед", можете свой сделать... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 18:35 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
buser , МСУ , Спасибо! buser , по логике Predicatbuilder как раз то, что нужно! Но не по исполнению. Наверное здесь лучше будет использовать хранимую процедуру и передавать туда таблицу фильтров. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 19:37 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Ваш вариант с процедурой, лично мне, кажется наиболее предпочтительным :) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 21:16 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 06:24 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Шамиль ФаридовичА мне необходим поиск по одному списку связанных пар, т.е Ну так бы сразу и написал. В чем сложность использовать LINQ JOIN? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 09:05 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУШамиль ФаридовичА мне необходим поиск по одному списку связанных пар, т.е Ну так бы сразу и написал. В чем сложность использовать LINQ JOIN Concat или Union?Поправил :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 09:42 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 09:45 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Алексей К, мне кажется, что на выхлопе будет неимоверно жуткий план. Или ошибаюсь? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 09:58 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Всё-таки, как не прискорбно, я в данной задаче с временной табличкой за хранимку... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 10:00 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУАлексей К, мне кажется, что на выхлопе будет неимоверно жуткий план. Или ошибаюсь? :)Замена OR => UNION является типовой методикой оптимизации. Не так ли? :-) Бывает, оптимизатор SQL сам производит такую замену, но редко. :-) Всё зависит от количества условий. Вряд ли их будет много. Даже если такое решение не устроит, подумать о нём надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 10:44 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУВсё-таки, как не прискорбно, я в данной задаче с временной табличкой за хранимку...Я бы не торопился отчаиваться. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 10:45 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Алексей К, таки выхлоп в студию :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 10:55 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУАлексей К, таки выхлоп в студию :)Выхлоп чего? Этого? Код: sql 1.
vs Код: sql 1. 2. 3. 4. 5.
Мне кажется тут всё очевидно. Во всяком случае для меня. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 11:02 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Алексей К, а если ты батч переполнишь при большом кол-ве строк в bookFilters? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 11:35 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУАлексей К, а если ты батч переполнишь при большом кол-ве строк в bookFilters?~250 МБ вряд ли переполнится. Думаю, быстрее начнуться другие проблемы. :-) Ну давай прикинем, эти условия скорее всего приходят из UI, из какого-нибудь контрола. Их там 10, 20...50, ну всяко не больше. А если это приходит не из UI, то скорее всего это архитектурная ошибка, и проблему нужно искать в другом месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 11:52 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Алексей К, 50 юнионов - это просто жестоко. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 11:54 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУАлексей К, 50 юнионов - это просто жестоко."Экономия на спичках" (ц) Да сейчас даже на мобилах 4-х ядерные процы ставят. Чего бояться? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 11:58 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Алексей КМСУАлексей К, 50 юнионов - это просто жестоко."Экономия на спичках" (ц) Я бы так не сказал. Во первых просад по планам. Подряд 50 сканов (ну или 50 индексных сиков, в зависимости от схемы и объемов) - это из области шизофрении. Как считаешь? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 12:02 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
МСУЯ бы так не сказал. Во первых просад по планам. Подряд 50 сканов (ну или 50 индексных сиков, в зависимости от схемы и объемов)Сканов там быть не должно, а 50 сиков, их сервер даже не заметит. Тут тонким местом скорее станет время компиляции запросов. МСУэто из области шизофрении. Как считаешь? :)Считаю, что надо делать тест и смотреть статистику. Мне лень... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 12:17 |
|
EF. Передать в where список значений
|
|||
---|---|---|---|
#18+
Алексей КСканов там быть не должно, а 50 сиков, их сервер даже не заметит. Тут тонким местом скорее станет время компиляции запросов. Ну обычно за такой гавнокод нормальный дба честно берет противопехотную гранату и определяет ей место в кабинете ORM-щиков пионеров. Согласен? :) Алексей КСчитаю, что надо делать тест и смотреть статистику. Мне лень... :-) Мне тоже лень, но 50 сиков для тупейшего запроса это жирно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 12:19 |
|
|
start [/forum/topic.php?fid=17&msg=38391652&tid=1349932]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
127ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 512ms |
0 / 0 |