создаю островки хаоса в пучине порядка


Комментарии
10.08.2012 в 13:12

Прям узнаю себя в этих строках =)))
Правда x.ManagementContract.FirstOrDefault(y => y.IsActual) айайай 2 раза выполняется)

Но ладно, у тебя еще все почти прозрачно. Вот, к примеру, один из последних моих перлов:

Хрен кто догадается!
10.08.2012 в 13:55

создаю островки хаоса в пучине порядка
smll, Правда x.ManagementContract.FirstOrDefault(y => y.IsActual) айайай 2 раза выполняется)
Дык ведь почему оно два раза выполняется? А потому, что блятский Predicate.And принимает в параметр тип Expression - т.е. тупо одно выражение, т.е. нельзя туда запихнуть функцию (даже анонимную, если в ней более одной строки), иначе Linq-2-Sql выплюнет рантайм-эксепшн. Ну оно и понятно, потому что эта хрень потом должна как-то преобразовываться в SQL-запрос)) Вот я и извращаюсь, чтобы всё впихнуть в одно выражение. Может конечно, есть какие-то обходные варианты, но мне они не известны.

А твоё я не догадался что делает =) По крайней мере без конекста. Но красоту оценил хД
10.08.2012 в 14:00

создаю островки хаоса в пучине порядка
мм хотя надо попробовать, может Linq достаточно умный чтобы если "x.ManagementContract.FirstOrDefault(y => y.IsActual) == null" самостоятельно вернуть "false" и не надо указывать это явно))
10.08.2012 в 14:54

taburetka91, о, Linq, я туда пока слава богу не лезу =)

Мой пример:
beforePeakChange - это тип делегата - public delegate bool beforePeakChange(PeakDB Sender, int Index, ref Peak NewPeak);
BeforePeakChange - переменная этого типа
Так как делегат может быть множественным, но при этом возвращает значение, я организовал метод расширения делегата InvokeShortCircuit, который вызывает все методы делегата и объединяет их возвращенные значения логической операцией (причем используя "сокращенное вычисление" - ну тоесть, если при & первый операнд == false, то тупо возващается false, а при | - наоборот), но так пользовательские наследники делегата имеют каждый свои входные параметры, чтобы не использовать DynamicInvoke (вообще не очень dynamic люблю =), решил воспользоваться лямбдой, в которой принимаемый делегат приводится к нужному потомку и, соответственно, выполняется.

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail