2015-02-04 4 views
3

Хорошо, вот глупый вопрос.LINQ версия SQL View?

Как я понимаю, SQL View представляет собой виртуальную таблицу, основанную на результирующем наборе SQL-запроса.

Из моего ограниченного знания SQL View я предполагаю, что набор результатов, который я получаю из оператора LINQ, совпадает с представлением SQL.

Я ошибаюсь?

Причина, по которой я прошу, состоит в том, что у меня есть программа, которая использует цикл foreach для чтения по набору результатов из запроса LINQ по строкам. Сотрудник сказал, что я должен использовать предварительно построенный SQL View для ускорения работы программы. Не знакомый с SQL-представлениями, я не уверен, как это мне поможет, основываясь на моих ограниченных знаниях.

+0

В коде они функционально одинаковы. SQL-запросы могут быть быстрее, это зависит от вашего варианта использования. – DLeh

+1

Возможно, поэтому мой коллега упомянул использование SQL View. Я проверяю определенные критерии внутри 'foreach' на каждой записи, по очереди. Возможно, он имел в виду, что я мог бы использовать представление, чтобы уменьшить набор результатов, тем самым отбросив записи, которые не соответствуют моим критериям. Но, возможно, я мог бы сделать это в исходном наборе результатов из инструкции LINQ. Я мог бы просто оценить результаты, отсеив записи, которые мне не нужны, а затем повторить оставшиеся результаты. Благодаря! – Kevin

+1

Да, если вы примените полезное «Где» и «Выбрать новый» в исходном заявлении LINQ, вы будете по существу делать то же, что и при создании представления SQL. По большей части SQL должен иметь возможность запускать произвольный запрос (из LINQ) с очень сопоставимой производительностью с представлением SQL, но будут случаи, когда оптимизация SQL-представления будет оптимизирована. – DLeh

ответ

2

Вы можете посмотреть на представления SQL в виде набора результатов, который может объединять значения нескольких таблиц (путем объединения, используя подвыбор и т. Д.). Если вы запрашиваете представление SQL, вы получаете лучшую производительность.

Linq 2 SQL возвращает вам набор данных и выполняет сопоставление с объектом, поэтому вы получаете IList.

Linq работает с так называемым интерфейсом IQueryable. Преимущество в том, что IQueryable выполняется, когда вы нажимаете метод iq.List(), iq.Array() в выражении IQueryable.

Я использовал его в одном из моих проектов особым образом: - создано нужный IQueryable запрос - то в зависимости от потребительной случае я исполнил iq.Count() или iq.List() на Это. Поскольку я мог бы избежать calint iq.List() (и поскольку мне в основном нужно было знать счет), я получил перфект. увеличение - и мне не пришлось существенно изменять существующий код.

+0

Спасибо за объяснение! Я отвечу, как только начнется таймер. – Kevin

Смежные вопросы