Александр Таратин обратная польская поможет мне конвертировать запрос в ExpressionTree. Я решаю обратную задачу: мне нужны C# конструкции, которые конвертируются в запрос.
Sharp: Поглядел, спасибо. Насколько я понял, там создается ExpressionTree на клиенте, оборачивается, перекидывается на сервер, там разворачивается и выполняется средствами EF или просто IEnumerable.
Мне же надо, чтоб на выходе просто строка была, содержащая запрос.
Но за идею спасибо, EntityFramework ведь генерит запросы к MS SQL, и наверняка там есть преобразования Func в текстовый вид.
Да, я тоже так сначала думал. Заказчик не оценил. Он хочет нажать на кнопку, и любоваться панелькой загрузки со скачиваемым документом, а не возиться с "Сохранить как - имя - тип pdf - ок". Опять-таки, помимо нужной инфы на странице еще шапка\подвал\боковая панель, а они в pdf лишние.
amf1k: В конфиге на хостинге я указываю логин-пароль как раз для базы хостера. MySql Workbench вполне успешно подключается.
Я настраиваю соединение примерно так: ISessionFactory factory = Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(c =>
c.Server(server)
.Database(db)
.Username(user)
.Password(password)))...
При этом юзер у меня: "myUser", откуда берется "myUser@csSitesShared11" - мне самому интересно. Также интересно, как можно подобного избежать.
Keyten: Это элементарно и очевидно геометрически. До перевода фразы если непрерывная на ab функция в точке a меньше нуля, а в b больше, то где-то между ними она равна нулю в геометрическое представление требуется время. И самому до этого можно не дойти (кое-кому не нравилась геометрия, например :)). Мне в свое время после первого семестра подсказку дал однокурсник. После этого я сразу (за час) понял\осознал половину тогдашнего матана.
В любом случае, у каждой теоремы свой ключик. Где-то геометрия, где-то прогрессия, где-то дихотомия. При этом ключики для пары человек-область специфические. Плюс, один ключик открывает множество теорем, и если доказательство неясно - новый ключик где-то рядом. :)
Со временем перестаешь подбирать ключи (ибо их много), а просто пытаешься понять, какого ключика не хватает очередной проблеме.
А потом учишься подбирать к проблеме стандартные ключики, чтоб твои решения были понятны другим людям.
Denis Antonenko: Честно говоря, сейчас уже не вспомню деталей проблемы. Вроде бы структура вида struct MyStruct{ private string Name; public string Uri; } не сериализовывалась без указания атрибутов.
А стоит ли их в консоли использовать? Это же отдельный консольный проект нужен, с запуском надо разбираться. Проще локальный UnitTest класс создать, и весь функционал прямо там тестировать. Тот же дополнительный (если нет других Unit-Tests) проект, но нет необходимости создавать лишний UI, и думать, как его запустить.
Max Suprunenko: Очень грубо. К сожалению, сам С++ знаю лишь по универской программе, и указать различия не смогу (разве что, сложение приводит не к смещению указателя, используются а к делегату, вызывающему сразу несколько методов), но Шилдт отдельно отмечал, что концепция схожа, но детали сильно различны. Это особо касается делегатов и Generic (которые вроде как похожи на шаблоны).
holymotion: Посмотрел коммент выше и ужаснулся.
Напиши несколько методов.
Первый возвращает значение от пользователя.
Второй проверяет, содержит ли строка строка лишь одного юзера (не содержит '&', '|').
Третий возвращает значение из строки, которая не содержит ('|'), но может содержать ('&').
Четвертый метод - существующий String.Split().
Пятый - проверка, что строка не содержит ('|')
Берешь исходную строку, проверяешь вторым методом. Если один юзер - вызываешь первый метод.
Если юзеров много, проверяешь строку на наличие ('|') третьим методом. Если '|' нет (пятый метод) - вызываешь третий метод.
Если же '|' есть - вызываешь Split('|'), получаешь подстроки. Для каждой вызываешь третий метод, результаты логически складываешь.
holymotion: Для каждой строки: Сначала делаешь Split('|'). Получаешь массив подстрок. Для каждой из подстрок делаешь Split('&'), получаешь "подподмассивы" строк. В каждой строке любого подподмассива лежит имя юзера.
Объединяешь все подподмассивы в словарь<юзер, мнение>, LINQ Distinct() в помощь.
Запрашиваешь мнения всех юзеров из словаря.
Для каждого подподмассива вычисляешь значение (если хоть один юзер вернуд false - значение false).
Для каждого массива вычисляешь значение (если хоть одно подмассивное значение true - значение true).
Ко всему этому потребуется прикрутить частные случаи (когда только один юзер). В принципе, можно попробовать рекурсивно забабахать.