Che*_*tah 8 c# data-structures
我有很多实例,有两个类Children,Animal它们有多对多的实体关系.
我希望有一个数据结构,这样Children我可以得到一个Animal映射到它的列表,反之亦然.对于任何给定的Animal我可以获得Children映射到它的列表.
我需要这个数据结构是并发的,以便任何线程都可以访问它.
所以给出一个示例映射:
Child1 -> Animal1
Child1 -> Animal2
Child1 -> Animal3
Child2 -> Animal2
Child2 -> Animal3
Child3 -> Animal3
Run Code Online (Sandbox Code Playgroud)
查询Child1我希望得到一个返回列表:[ Animal1, Animal2, Animal2 ].
查询Animal2我希望得到一个返回列表:[ Child2, Child3 ].
我能想到的唯一方法是使用字典和列表中的每个项目(动物和儿童),但我还要处理锁定列表的同步,这是很麻烦的.
我认为你必须将你的数据结构分成三层.
Child <- ChildToAnimalRelation -> Animal
Run Code Online (Sandbox Code Playgroud)
所以Child,Animal两者都有ChildToAnimalRelation
public class ChildToAnimalRelation
{
public Child Child { get; set; }
public Animal Animal { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
获取动物儿童的方法如下:
var children = currentAnimal.ChildToAnimalRelations.Select(r => r.Child);
Run Code Online (Sandbox Code Playgroud)
反之亦然:
var animals = currentChild.ChildToAnimalRelations.Select(r => r.Animal);
Run Code Online (Sandbox Code Playgroud)