有两个List,list1和list2,数据类型都是一个DTO类
想要把list2与list1相同属性的值赋给list1
如何写啊?循环一条条的赋值吗?还有怎样提出一个共通的方法啊?求高手门帮帮我这个新手吧谢谢了

解决方案 »

  1.   

    可以在你的DTO里定义一个clone()方法        public LineEntity Clone()
            {
                // シリアル化した内容を保持しておくためのMemoryStreamを作成
                using (MemoryStream stream = new MemoryStream())
                {
                    // バイナリシリアル化を行うためのフォーマッタを作成
                    BinaryFormatter f = new BinaryFormatter();                // 現在のインスタンスをシリアル化してMemoryStreamに格納
                    f.Serialize(stream, this);                // ストリームの位置を先頭に戻す
                    stream.Position = 0L;                // MemoryStreamに格納されている内容を逆シリアル化する
                    return (LineEntity)f.Deserialize(stream);            }        }
    DTOClass上面加上    [Serializable]
      

  2.   

    如果DTO中没有复杂对象的话
    定义一个clone方法  public DTO1 Clone()
      {
        return (DTO1)MemberwiseClone();
      }
      

  3.   

    foreach(DTO1 dto in list1)
    {
    list2 = new List<DTO1>();
    list2.Add(dto.Clone());
    }
      

  4.   

    list2 = new List<DTO1>();
    foreach(DTO1 dto in list1)
    {
    list2.Add(dto.Clone());
    }
      

  5.   

    22个list的DTO不一样  不能这么add啊
      

  6.   

    2个list的DTO不一样  不能这么add啊
      

  7.   

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var list1 = new List<string>() { "a", "b", "c", "d" };
                var list2 = new List<string>() { "c", "d", "e", "f" };
                list1 = list1.Intersect(list2).ToList();
                Console.WriteLine(string.Join(", ", list1));
            }
        }
    }// result is "c", "d".
      

  8.   


    List<DTO2> listTemp;
    foreach(DTO1 dto in list1)
    {
    listTemp = list2.Where(o=>o.id.Equals(dto.id)).Select(o=>o).ToList();
    foreach(PropertyInfo pi in dto.GetType().GetProperties())
    {
    pi.Name 
    foreach(PropertyInfo pi2 in listTemp)
    {
    if(pi2.Name.Equals(pi.Name))
    {
    pi.SetValue(pi2.GetValue(null,null));

    }
    }
    }没有测试。你试试吧
      

  9.   

    List<DTO2> listTemp;
    foreach(DTO1 dto in list1)
    {
    listTemp = list2.Where(o=>o.id.Equals(dto.id)).Select(o=>o).ToList();
    foreach(PropertyInfo pi in dto.GetType().GetProperties())

    foreach(PropertyInfo pi2 in listTemp)
    {
    if(pi2.Name.Equals(pi.Name))
    {
    pi.SetValue(pi2.GetValue(null,null));
    }  
    }
    }
    }
      

  10.   

    dto.id用你DTO里面类似key的东西代替一下
      

  11.   

    List<string> t = new List<string>(); 
    List<string> t2 = new List<string>(t.ToArray()); 
      

  12.   


    public class UserCopy
    {
        public class LoginEntity
        {
            public string UserName { get; set; }
            public string UserPwd { get; set; }
            public DateTime ActiveTime { get; set; }
        }
        public class UserEntity : LoginEntity
        {
            public string UserID { get; set; }
            public Int16 UserSex { get; set; }
            public Int32 UserAge { get; set; }
        }
        protected void UserCopy()
        {
            List<UserEntity> ueList = new List<UserEntity>() { 
                new UserEntity(){
                UserID="U1",
                UserName="U1",
                UserPwd="U1PWD",
                ActiveTime=DateTime.Now
                },
                new UserEntity(){
                UserID="U2",
                UserName="U2",
                UserPwd="U2PWD",
                ActiveTime=DateTime.Now},
                new UserEntity(){
                UserID="U2",
                UserName="U2",
                UserPwd="U2PWD",
                ActiveTime=DateTime.Now}
                };
            List<LoginEntity> leList = new List<LoginEntity>();
            //方法一:遍历
            ueList.ForEach(ue => leList.Add(new LoginEntity()
            {
                UserName = ue.UserName,
                UserPwd = ue.UserPwd,
                ActiveTime = ue.ActiveTime
            }));
        }
    }