Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > LINQ (Language-Integrated Query) > Своя реализация Select |
Автор: Vyacheslav 10.8.2013, 17:21 |
Итак предыстория. При разработке проекта меня обязали использовать DataTable с неким самописным фраймворком, который дает возможность писать запросы используя свои собственные expression. Основной недостаток этой системы - невозможность прикрыть использования БД каким либо единообразным интерфейсом. Почему был принято такое решение - вопрос в данном случае второстепенный. В общем я решил написать Linq provider к предоставленному фреймвоку, который должен стандартные Expression преобразовывать в expression SomeFrameWork Было БД => Ado.Net => SomeFrameWork => DataTable Стало БД => Ado.Net => SomeFrameWor =>Linq => DataTable or collection of Anonym class Доступ закрыл интерфейсами Repository и UnitOfWork Не решена только одна проблема Вот такое работает from obj1 in rep.Query select obj1 а вот такое уже нет from obj1 in rep.Query select obj1 => new { obj1.A, obj1.B } Селект идет к БД как и ожидалось только на два поля, но при полученнии результата происходит ошибка преобразования IEnumerable<DataRow> в IEnumerable<Анонимный класс> Не могу понять, как реализовать обработку селекта, чтобы где-то сохранить и преобразование. Кто нибудь знает, как select обрабатывается так, что происходит снчала формирование запроса (IQueryable) и затем, при получении результата, (IEnumerable) вызывается преобразование ? |