Я думаю, что ваша главная проблема здесь просто печатать. Используя var
для хранения начального запроса, введите его как DbSet<SomeObject>
. Для построения запросов вам понадобится IQueryable<SomeObject>
. Другими словами, измените исходную строку на:
IQueryable<SomeObject> query = from o in _dbContext.SomeObjects;
Я сам не использую LINQ-to-SQL, так что это может быть немного не так, но я думаю, что тогда вы просто сделаете что-то вроде :
query = query join type in _dbContext.Types on o.TypeId equals type.ID;
Я знаю, что это работает с LINQ-to-Entities, например:
query = query.Include(x => x.Types);
Можно хранить макросы общей задачи в .vim файлах, как это, например, и затем можно загрузить их командой: так file.vim
Здесь можно найти набор полезных макросов, также я рекомендую Вам изучить хорошо полезную q команду записи макроса, это очень очень мощно...
Макросы, созданные с командой q, хранятся в регистре, qq хранит макрос в регистре q, поэтому при окончании записи, можно просто вставить макрос, с "qp и сохранить его, позже можно загрузить его путем простого дергания макроса в регистр т.е.: "qY, макросы являются только текстом и помнят, что можно использовать любой регистр вместо q. Существует Сценарий Vim для хранения q макросы:
marvim: Макро-Персистентное устройство хранения данных и Совместно используемый Репозиторий для VIM
Также смотрите к Языку сценариев Vim.
Можно сохранить последовательности команды в Вашем .vimrc
и присвойте им привязку клавиш с :map
команда. Например:
echo >>~/.vimrc ":map ,c :%s/,/','/g<CR>:%s/^/('/g<CR>:%s/$/'),/g<CR>"
При нажатии",c
"на живой сессии это преобразует Ваш файл CSV в часть оператора INSERT.
На командной строке, через которую точно та же часть редактирования может быть применена к файлу (это перезапишет, несомненно, скопирует сначала):
vim file.txt -c ':normal ,c | :x'
Мог бы быть лучший путь, но это работает.
Я использую q
/@
записывать/воспроизводить макрос вполне часто.
Следующие повышаются, пытается записать в чем-то как 3 или меньше исключая командами.
Если что-то столь сложное, что ни макрос, ни короткое исключая последовательностью не будут достаточны, я склонен писать это как сценарий Perl вместо этого. Язык сценария энергии немного слишком ограничен, чтобы попытаться выполнить в главных вещах для моего вкуса. (Хотя энергия 7 добилась больших успехов в этом отношении путем заимствования набора вещей из Python.)
Отметьте это @
делает что-то очень простое: это берет содержание регистра и воспроизводит их, как будто Вы ввели их в нормальном режиме. Аналогично q
просто записывает последовательность, которую Вы вводите в регистр, который Вы называете. Это те же самые регистры, которые Вы используете для того, чтобы дергать/поместить – что означает, что можно непосредственно вставить зарегистрированную последовательность в файл (.vimrc
кто-либо?) или рывок последовательность команд из файла и воспроизведения это (таким образом, Вы могли удержать набор их ~/my-vim-macros.txt
или что-то).
Лично, и возможно частично, потому что я использовал Unix задолго до того, как энергия существовала (heck, первая версия Unix, который я использовал, не имела "vi" ни одним - но это - другая история), я обычно использовал бы 'сценарий оболочки' (или, более вероятно, сценарий Perl), чтобы сделать преобразование. Для преобразования данных CSV для ВСТАВКИ, имея дело с quotes/non-quotes и встроенными запятыми в полной общности грязно - я, вероятно, стремился бы использовать сценарий Perl с текстом:: CSV_XS для гарантии корректного парсинга. Я затем запустил тот скрипт на диапазоне текста, для которого было нужно преобразование.
Одним преимуществом этого является сфокусированный подход инструмента - один инструмент делает одно задание правильно. Мой частный каталог bin имеет 300 или больше сценариев и программы в нем; каталог RCS имеет более чем 500 сценариев в нем.
Нельзя сказать, что сценарии в энергии плохи. Я использую (более или менее) сложные команды карты для записи сложных манипуляций, часто когда я собираюсь, должны сделать то же изменение через комплект файлов, и когда я не буду думать, что будет стоить создать сценарий для задания. Однако, если я буду думать, что мне, возможно, понадобились бы изменения несколько раз, то затем я напишу сценарий его. Например, GCC начал становиться нахальным (приблизительно 2005) о не встраивании неиспользованных статических строк в объектных файлах - который означал, что моя информация об управлении версиями не была видима. Так, в течение лет, поскольку я редактирую исходные файлы, я преобразовал от статического (фиксированного) имени до общедоступного имени - неохотно, но обязательно AFAIAC. У меня есть сценарий, который делает то редактирование для меня, поэтому когда я должен внести изменение в файле, я запускаю тот скрипт, чтобы сделать так. У меня есть другой сценарий, который обновляет информацию об авторском праве; мне нужно тот каждый раз, когда я сначала изменяю файл в данном году. Да, я мог, вероятно, спрятать его как что-то в энергии - я рос, думая, что отдельный сценарий лучше, не в последнюю очередь потому что, если я переключаюсь на какого-либо другого редактора, я могу все еще использовать сценарий.