Как назвать UDF в linq к запросу SQL?

Причина в том, что остальная часть строки не извлекается fgets(), если она больше переданного буфера и, следовательно, остается во входном буфере вашего файлового потока stdin; впоследствии преобразования scanf() не удаются.

Вам придется обнаружить этот случай (например, проверив, является ли последний символ в вашей только что прочитанной строке не новой строкой) и очистить входной буфер до следующей новой строки, например, вызвав getchar() в цикл до новой строки (или EOF). Затем позвоните scanf().

Пример кода (непроверенный и EOF-проверка по-прежнему отсутствует):

fgets(ID, sizeof(ID), stdin);
if (ID[strlen(ID)-1] != '\n') {
    while (getchar() != '\n')
        ;
}

И не забудьте проверить возвращаемые значения ваших вызовов scanf(), чтобы увидеть, если преобразования были успешными!

7
задан RandomProgrammer 1 February 2009 в 11:56
поделиться

2 ответа

Вот статья MSDN:

Как к: вызовите пользовательские встроенные функции (LINQ к SQL)

Примечание от той же страницы:

Хотя можно вызвать пользовательские встроенные функции, функции, которые включены в запрос, выполнение которого задерживается, не выполняются, пока запрос не выполняется. Для получения дополнительной информации посмотрите Введение в Запросы LINQ.

Когда Вы вызываете ту же функцию вне запроса, LINQ к SQL создает простой запрос из выражения вызова метода

Кроме того, смотрите на эти 13 минимальных скринкастов.

3
ответ дан 7 December 2019 в 12:25
поделиться

Можно добавить UDF's к LINQ к SQL файл DBML точно так же, как Вы добавляете таблицы и sprocs.

Они затем становятся исполняемыми методами на DataContext.

Google имеет много статей, как это.

2
ответ дан 7 December 2019 в 12:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: