C#linq:将表中的行复制到另一个表中

时间:2017-03-20 13:21:46

标签: c# sql linq

我有两张相同的桌子。我想将第一个表中的一些行复制到另一个表中。这就是我所做的:

var getTemplate = (from i in dc.Templates where i.Document == tablename select i );

            foreach (var val in getTemplate)
            {
                DAL.Type qt = new DAL.Type();

                qt.col1 = val.col1;
                qt.col2 = val.col2;
                ....
            }

但是有很多专栏。有没有办法一次复制整行?

2 个答案:

答案 0 :(得分:0)

Christos是对的,自动播放器非常适用于此类事物。如果您不想将依赖项添加到自动映射器或学习它,请查看

ConvertAll()。

https://msdn.microsoft.com/en-us/library/73fe8cwf(v=vs.110).aspx

答案 1 :(得分:0)

我认为Automapper会奏效。如果您的列名相同,您将摆脱大量工作量。

你可以像这样转换;

BankViewModel bank = Mapper.Map<BankViewModel>(BankDto);

您的AutoMapper初始化;

    public class AutoMapping
    {
        internal static void Init()
        {
             Mapper.CreateMap<BankDto, BankViewModel>()
            .ForMember(dst => dst.Id, opt => opt.MapFrom(src => src.BankId))
            .ForMember(dst => dst.InstitutionBankId, opt => opt.MapFrom(src => src.InstitutionBankId));
        }
    }

最后,您应该在Global.asax中注册应用程序启动的Inıtialization。

     protected void Application_Start()
     {
         AutoMapping.Init();
     }

如果您的列同名Mapper.CreateMap<BankDto, BankViewModel>()将起作用。