Linq的用法
由于公司序列化分为两个模块,但是里面内容有些出入,但是修改其中一项,另一项也要修改
1、现在有两个类
public class Person
{
public int Id { get; set; }
[DaoFakeDataInfo("姓名")]
public string Name { get; set; }
public int Age { get; set; }
[DaoFakeDataInfo("爱好")]
public string Hobby { get; set; }
[DaoFakeDataInfo("城市")]
public string Address { get; set; }
}
public class NewPerson
{
public int Id { get; set; }
public string Name { get; set; }
}
2、我需要序列化的时候只保存Id和Name,所以
List<NewPerson> newPeople = Persons.Select(x=>new NewPerson() { Id=x.Id,Name=x.Name}).ToList();
3、此时,当我修改List-NewPerson的时候,需要List-Person中其他属性不变,但是Id和Name使用NewPerson的,在这里有两种方案
3-1、普通for循环
// 假设已有 List<Person> persons 和修改后的 List<NewPerson> newPeople
foreach (var person in persons)
{
var matchingNewPerson = newPeople.FirstOrDefault(np => np.Id == person.Id);
if (matchingNewPerson != null)
{
person.Id = matchingNewPerson.Id; // 更新 Id(如果可能变化)
person.Name = matchingNewPerson.Name; // 更新 Name
}
}
3-2、使用Linq的ZIP方法
var s = Persons.Zip(newPeople, (person, newPerson) =>
{
person.Id = newPerson.Id; // 更新 Id
person.Name = newPerson.Name; // 更新 Name
return person;
}).ToList();

浙公网安备 33010602011771号