Приведение System.Data.Linq.Таблица к пользовательскому классу

#c# #linq #linq-to-sql

#c# #linq #linq-to-sql

Вопрос:

Я делаю запрос в своей таблице sql, используя Linq to SQL . Я получаю экземпляр System.Data.Linq.Table<Table>

У меня также есть класс с некоторыми свойствами, которые соответствуют свойствам моей таблицы (свойства имеют то же имя, что и свойства моего экземпляра System.Data.Linq.Table<Table> )

Как привести System.Data.Linq.Table<Table> к экземпляру моего пользовательского класса?

Без do Select(x => new CustomClass() { Id = x.Id, Name = x.Name ....}) и без (если возможно) использования Reflexion (это так медленно)

Комментарии:

1. Взгляните на Entity Framework

2. В чем разница с ней Linq To Sql ? Я получаю System.Data.Entity.DbSet<Table>

Ответ №1:

Вы можете использовать AutoMapper для сопоставления ваших объектов. Вы можете проверить страницу «Начало работы» здесь https://github.com/AutoMapper/AutoMapper/wiki/Getting-started

По сути, вы настроите сопоставление между вашими Table и CustomClass классами

 Mapper.Initialize(cfg => cfg.CreateMap<Table, CustomClass>());
  

Затем вы можете сопоставить Table экземпляр с CustomClass одним

 CustomClass myCustomClass= Mapper.Map<CustomClass>(table);
  

Комментарии:

1. Да, но есть ли собственный метод?

2. Хотя это хорошее предложение, ответ на одну ссылку без особой помощи. Пожалуйста, приведите краткий пример, относящийся к вопросу о том, как это можно использовать

3. @user6852886 что значит «родной»? Если вы не хотите использовать внешний пакет, возможно, вы можете использовать неявный оператор приведения между вашими классами msdn.microsoft.com/en-us/library/85w54y0a.aspx

4. простое руководство по использованию automapper github.com/AutoMapper/AutoMapper/wiki/Flattening

5. Спасибо, но я не хочу использовать внешнюю библиотеку