我有一个对象集合Product,每个对象包含两个对象集合User和一个主用户Creator:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Product
{
public int Id { get; set; }
public string Title { get; set; }
public User Creator { get; set; }
public ICollection<User> UsersAsMain { get; set; }
public ICollection<User> UsersAsReserve { get; set; }
}
- 一个对象的两个列表中的用户对象
Product都不同,不重复 - 对象的副本(单个实例)
Creator可以在列表之一中 - 一个中的用户对象
Product也可能在其他中。
有必要遍历所有用户,如果找到其副本,则为其分配一个指向主对象的链接。结果,所有相同的用户必须引用内存中的同一个对象。
如何编写一个 LINQ 查询(可能是几个)来检查和重新定义链接?比较就够了Id。
创建一个存储用户链接的对象
我们遍历所有集合,获取用户,在中
users查找它,如果找到它,我们用链接替换它,如果没有,我们将它添加到users当然,这是一个大拐杖。你必须弄清楚克隆是如何出现在这些集合中的。