#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. Спасибо, но я не хочу использовать внешнюю библиотеку