想要把list2与list1相同属性的值赋给list1
如何写啊?循环一条条的赋值吗?
还有怎样提出一个共通的方法啊?
求高手门帮帮我这个新手吧。。。谢谢了
21 个解决方案
#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]
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
LIST1=LIST2
#3
如果DTO中没有复杂对象的话
定义一个clone方法
public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
定义一个clone方法
public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
#4
要是循环该怎么写啊?
#5
foreach(DTO1 dto in list1)
{
list2 = new List<DTO1>();
list2.Add(dto.Clone());
}
{
list2 = new List<DTO1>();
list2.Add(dto.Clone());
}
#6
list2 = new List<DTO1>();
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
#7
2
2个list的DTO不一样 不能这么add啊
2个list的DTO不一样 不能这么add啊
#8
2个list的DTO不一样 不能这么add啊
#9
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".
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".
#10
以为是同一个DTO
#11
那怎么写呢
#12
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));
}
}
}
}
没有测试。你试试吧
#13
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));
}
}
}
}
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));
}
}
}
}
#14
#15
dto.id用你DTO里面类似key的东西代替一下
#16
还是挨个赋值吧,刚才的代码有问题。
#17
根据需求可能需要循环赋值
#18
#19
for和foreach都应该怎么写啊?
#20
List<string> t = new List<string>();
List<string> t2 = new List<string>(t.ToArray());
List<string> t2 = new List<string>(t.ToArray());
#21
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
}));
}
}
#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]
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
LIST1=LIST2
#3
如果DTO中没有复杂对象的话
定义一个clone方法
public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
定义一个clone方法
public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
#4
要是循环该怎么写啊?
#5
foreach(DTO1 dto in list1)
{
list2 = new List<DTO1>();
list2.Add(dto.Clone());
}
{
list2 = new List<DTO1>();
list2.Add(dto.Clone());
}
#6
list2 = new List<DTO1>();
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
#7
2
2个list的DTO不一样 不能这么add啊
2个list的DTO不一样 不能这么add啊
#8
2个list的DTO不一样 不能这么add啊
#9
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".
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".
#10
以为是同一个DTO
#11
那怎么写呢
#12
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));
}
}
}
}
没有测试。你试试吧
#13
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));
}
}
}
}
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));
}
}
}
}
#14
#15
dto.id用你DTO里面类似key的东西代替一下
#16
还是挨个赋值吧,刚才的代码有问题。
#17
根据需求可能需要循环赋值
#18
#19
for和foreach都应该怎么写啊?
#20
List<string> t = new List<string>();
List<string> t2 = new List<string>(t.ToArray());
List<string> t2 = new List<string>(t.ToArray());
#21
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
}));
}
}