Синтаксис запроса:
var count = (из o в контексте.MyContainer, где o.ID == '1' из t в o.MyTable выберите t) .Count ();
Синтаксис метода:
var count = context.MyContainer .Where (o = & gt; o.ID == '1') .SelectMany (o = & gt; o.MyTable) .Count ()
Оба генерируют один и тот же SQL-запрос.
Два вопроса, которые я бы прокомментировал.
Во-первых, вы не указываете, на какой платформе вы нацеливаетесь. Хотя последние версии Windows (Win2000, WinXP, Vista и Win7) поддерживают как многобайтовые, так и Unicode-версии системных вызовов с использованием строк, версии Unicode быстрее (многобайтовые версии являются оболочками, которые конвертируются в Unicode, вызывают версию Unicode, а затем конвертируют любые возвращенные строки обратно к mutlibyte). Поэтому, если вы делаете много таких вызовов, Unicode будет быстрее.
Просто потому, что вы не планируете явно поддерживать дополнительные языки, вам все равно следует рассмотреть возможность поддержки Unicode, если ваше приложение сохраняет и отображает текст, введенный пользователями. Просто потому, что ваше приложение является неязычным, из этого не следует, что все его пользователи также будут иметь язык. Они могут быть очень рады использовать ваш графический интерфейс на английском языке, но могут захотеть ввести имена, комментарии или другой текст на своем родном языке и правильно отобразить их.
Первый ответ на этот вопрос должен ... ответить на все, что вам нужно знать.
Короткий ответ (IMO, и я ошибался) заключается в том, что лучше планировать худшее (или лучше всего в зависимости от вашей точки зрения) и делать unicode прямо сейчас.
Если ваше приложение не очень интенсивно, то переходить непосредственно к unicode не имеет значения; в случае игр это не должно быть большим фактором по сравнению с остальной частью двигателя.
Макс.
Вот простое соображение: должна ли ваша программа работать, если она используется г-ном 菅 直 人? Его домашний каталог может быть трудно представить в ASCII.
Вы говорите о настройке проекта VC ++ здесь, правда?
Единственная вещь, на которую это влияет, - это версия вызовов API Win32, которая заканчивается тем, что она вызывается. Например, вызов MessageBox
будет завершен в качестве вызова MessageBoxA
в случае многобайтовой настройки и MessageBoxW
в случае Настройка Юникода. Конечно, это повлияет и на типы строковых параметров на эти функции. Внутри MessageBoxA
вызывает MessageBoxW
после преобразования параметров строки из текущего языкового стандарта системы в Unicode.
Мой совет - использовать настройки Unicode и передать Unicode строки для вызовов API Win32. Это не мешает вам использовать строки в любой другой кодировке внутри.