Если вы хотите использовать механизмы кэширования, например Redis или Memcached , возможно, выбор DALMP может быть выбран. Он использует чистый MySQLi . Проверьте это: Уровень абстракции базы данных DALMP для MySQL с использованием PHP.
Кроме того, вы можете «подготовить» свои аргументы перед подготовкой своего запроса, чтобы вы могли создавать динамические запросы и в конце имеют полностью подготовленный запрос. Уровень абстракции базы данных DALMP для MySQL с использованием PHP.
Ну, Вы могли использовать:
var list = anBook.Select(x => new ClearBook {
Code = x.Code, Book = x.Book}).ToList();
, но не, нет никакой прямой поддержки преобразования. Очевидно, необходимо будет добавить средства доступа, и т.д. (не обнародуйте поля) - я предположил бы:
public int Code { get; set; }
public string Book { get; set; }
, Конечно, другая опция состоит в том, чтобы запуститься с данных, как Вы хотите его:
var list = new List<ClearBook> {
new ClearBook { Code=10, Book="Harry Potter" },
new ClearBook { Code=11, Book="James Bond" }
};
существуют также вещи, которые Вы могли сделать для отображения данных с отражением (возможно, использование Expression
, чтобы скомпилировать и кэшировать стратегию), но это, вероятно, не стоит того.
Как Marc говорит, это может быть сделано с отражательными и деревьями выражений... и по стечению обстоятельств, существует класс в MiscUtil, который делает точно это. Однако смотря на Ваш вопрос более тесно это кажется, что Вы хотите применить это преобразование в набор (массив, список или безотносительно) без цикличного выполнения . Это не может возможно работать. Вы преобразовываете от одного типа до другого - он не похож на Вас, может использовать ссылку на анонимный тип, как будто это - ссылка на ClearBook.
Для предоставления примера того, как класс PropertyCopy работает, хотя, Вам просто было бы нужно:
var books = anBook.Select(book => PropertyCopy<ClearBook>.CopyFrom(book))
.ToList();