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();
posted @ 2025-06-20 22:11  孤沉  阅读(7)  评论(0)    收藏  举报