急急,两个List之间赋值方法

bl525lb 2012-02-03 08:37:56
有两个List,list1和list2,数据类型都是一个DTO类
想要把list2与list1相同属性的值赋给list1
如何写啊?循环一条条的赋值吗?

还有怎样提出一个共通的方法啊?

求高手门帮帮我这个新手吧。。。谢谢了
...全文
1475 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
eRenChina 2012-02-03
  • 打赏
  • 举报
回复
List<string> t = new List<string>();
List<string> t2 = new List<string>(t.ToArray());
bl525lb 2012-02-03
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 woshizou 的回复:]

引用 3 楼 kong19 的回复:

如果DTO中没有复杂对象的话
定义一个clone方法

public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
根据需求可能需要循环赋值
[/Quote]
for和foreach都应该怎么写啊?
喜阳阳 2012-02-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kong19 的回复:]

如果DTO中没有复杂对象的话
定义一个clone方法

public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
[/Quote]根据需求可能需要循环赋值
kong19 2012-02-03
  • 打赏
  • 举报
回复
还是挨个赋值吧,刚才的代码有问题。
kong19 2012-02-03
  • 打赏
  • 举报
回复
dto.id用你DTO里面类似key的东西代替一下
夜色镇歌 2012-02-03
  • 打赏
  • 举报
回复
kong19 2012-02-03
  • 打赏
  • 举报
回复
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));
}
}
}
}
kong19 2012-02-03
  • 打赏
  • 举报
回复

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));
}
}
}
}

没有测试。你试试吧
bl525lb 2012-02-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 kong19 的回复:]

以为是同一个DTO
[/Quote]那怎么写呢
kong19 2012-02-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 bl525lb 的回复:]
有两个List,list1和list2,数据类型都是一个DTO类
想要把list2与list1相同属性的值赋给list1
如何写啊?循环一条条的赋值吗?

还有怎样提出一个共通的方法啊?

求高手门帮帮我这个新手吧。。。谢谢了
[/Quote]

以为是同一个DTO

threenewbee 2012-02-03
  • 打赏
  • 举报
回复
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".
bl525lb 2012-02-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kong19 的回复:]

list2 = new List<DTO1>();
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
[/Quote]
2个list的DTO不一样 不能这么add啊
bl525lb 2012-02-03
  • 打赏
  • 举报
回复
2[Quote=引用 6 楼 kong19 的回复:]

list2 = new List<DTO1>();
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
[/Quote]
2个list的DTO不一样 不能这么add啊
kong19 2012-02-03
  • 打赏
  • 举报
回复
list2 = new List<DTO1>();
foreach(DTO1 dto in list1)
{
list2.Add(dto.Clone());
}
kong19 2012-02-03
  • 打赏
  • 举报
回复
foreach(DTO1 dto in list1)
{
list2 = new List<DTO1>();
list2.Add(dto.Clone());
}
bl525lb 2012-02-03
  • 打赏
  • 举报
回复
要是循环该怎么写啊?
kong19 2012-02-03
  • 打赏
  • 举报
回复
如果DTO中没有复杂对象的话
定义一个clone方法

public DTO1 Clone()
{
return (DTO1)MemberwiseClone();
}
airsolasos 2012-02-03
  • 打赏
  • 举报
回复
LIST1=LIST2
kong19 2012-02-03
  • 打赏
  • 举报
回复
可以在你的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]
moacs 2012-02-03
  • 打赏
  • 举报
回复

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
}));
}
}
代码转载自:https://pan.quark.cn/s/eefcd5647328 在信息技术行业中,BIOS(基本输入输出系统)扮演着计算机硬件与操作系统之间的重要桥梁角色,其主要职责包括对硬件进行初始化和检测,以及负责启动操作系统的加载流程。联想Y430P作为一款广受用户青睐的便携式计算设备,而“联想Y430P-刷BIOS V3.66”特指将这款设备的BIOS版本升级至V3.66的具体操作。此类操作有时是不可或缺的,因为BIOS的升级能够修正已知的系统缺陷,优化硬件的互操作性,或者提升整体运行效能。 我们必须明确为何需要进行BIOS的刷新操作。联想Y430P设备可能存在某些功能上的约束,比如网卡白名单机制,这种机制会限制用户更换非原装硬件设备,例如无线网络适配器。网卡白名单是BIOS内嵌的一种安全防护措施,它仅允许经过认证的特定型号网卡在系统中正常工作,以此来保障系统的兼容性与稳定性。然而,这种安全特性同时也对用户自主进行硬件升级造成了限制。通过安装新版本的BIOS,我们可以移除这类限制条件,使系统能够识别并兼容更多种类的网卡设备,具体而言,在更新至BIOS V3.66版本后,用户可以自由更换网卡和显卡,而不会触发设备未获授权的警示信息。 在执行BIOS刷新操作之前,必须保持高度的审慎态度,因为不恰当的BIOS更新可能导致设备无法正常启动。以下是进行BIOS刷新的标准流程: 1. **保存当前BIOS状态**:在执行更新之前,强烈建议对现有的BIOS进行备份,以便在更新后出现问题时能够迅速恢复至初始状态。 2. **获取精确版本的BIOS更新包**:需从官方渠道或可信赖的第三方资源中下载与联想Y430P设备相匹配的BIOS V3.66升级文件。 3. *...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧