![]() |
|
Модераторы: gambit |
![]()
|
|
| Лен |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 20.1.2009 Репутация: нет Всего: нет |
Есть private IQueryable<Т> Функция(IQueryable<Т> query, string параметр).
Задача: выполнить внутри функции строку return query.OrderBy(x => x.параметр);. Вопрос: как красиво превратить строчку, полученную из String.Format("x => x.{0}", параметр) в собственно делегат вида Func<T, object>? На ум приходит только рефлексия с GetProperty+GetValue, но в конкретном случае не подойдёт из-за слишком низкой скорости. |
|||
|
||||
| Лен |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 20.1.2009 Репутация: нет Всего: нет |
Сделал и протестил рефлексию. Выглядит так:
Прилично работает на таблице в 200 записей. У заказчика - таблицы на 2-10 млн. записей. Есть ли более цивилизованный (т.е. быстрый) вариант??? З.Ы.: Боюсь, за этот меня повесят на трусах бухгалтера... |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 5 Всего: 62 |
Лен, это Linq To Objects? Откуда на клиенте 2-10 млн записей?!
Уж не знаю, насколько это ускорит процесс, но typeof(T).GetProperty(параметр) можно вынести за пределы лямбды как инвариант. Суровая контора... А за именование методов и переменных кириллическими символами мера наказания не предусмотрена? |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 4 Всего: 49 |
Лен,
Более-менее рабочие наброски. Тип свойства вынесен в параметры. Можно добавить немного рефлекшена - вытягивать K из T, собирать тип лямбды из генерика, сделать нормальный метод расширения...но это уже как-нибудь без меня |
|||
|
||||
| Лен |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 20.1.2009 Репутация: нет Всего: нет |
PashaPash, огромное спасибо! Делегат там всегда один - Func<EntityT, object>. Работает, и без рефлексии - а что ещё кодеру для счастья надо?
Idsa, заказчик - нацбанк, и этим всё сказано. Таблицы на миллионы записей и выполняемые сутками хранимые процедуры прилагаются (как и мегатётки, ложащиеся своим 6-ым размером бюста на клаву - после чего приходит жалоба, что периодически в прогу вводится туева хуча посторонней фигни). Имена кириллицей я только в самоличных поделках использую - а здесь привёл просто так. На самом деле оно всё выглядит несколько по-иному, чем я привёл. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | LINQ (Language-Integrated Query) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |