c# - 我在这里使用什么数据结构?

标签 c# data-structures

我有很多实例,这两个类 ChildrenAnimal 具有多对多 实体关系。

我想要一个数据结构,在给定一个 Children 的情况下,我可以获得映射到它的 Animal 列表,反之亦然。对于任何给定的 Animal,我可以获得映射到它的 Children 的列表。

我需要这个数据结构是并发的,这样它就可以被任何线程访问。

所以给出一个示例映射:

Child1 -> Animal1
Child1 -> Animal2
Child1 -> Animal3
Child2 -> Animal2
Child2 -> Animal3
Child3 -> Animal3

查询 Child1 我希望得到一个返回列表:[ Animal1, Animal2, Animal2 ]

查询Animal2 我希望得到一个返回列表:[ Child2, Child3 ]

我能想到的唯一方法是使用字典和字典中每个项目的列表(包括动物和 child ),但我还必须处理锁定列表的同步,这很麻烦。

最佳答案

我认为您必须将数据结构分成三层。

Child <- ChildToAnimalRelation -> Animal

所以 ChildAnimal 都有 ChildToAnimalRelation 的集合

public class ChildToAnimalRelation 
{
    public Child Child { get; set; }
    public Animal Animal { get; set; }
}

获取一个动物 child 将按如下方式完成:

var children = currentAnimal.ChildToAnimalRelations.Select(r => r.Child);

反之亦然:

var animals = currentChild.ChildToAnimalRelations.Select(r => r.Animal);

关于c# - 我在这里使用什么数据结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15477574/

相关文章:

c - 使用 qsort 对字符串进行排序

java - 将士兵分配到房间的算法问题

c# - 将未知的装箱简单值类型(char、int、ulong 等)转换为 UInt64

c - 检查指针数据时出现段错误

c# - 从 c# 中的 cosmos db 获取给定查询字符串的数据

c# - 任何用于在新行上自动连接的 visual studio 2010 扩展?

c++ - 为什么当我尝试使用带有参数的 priority_queue 作为指向结构的指针时会弹出错误

json - Swift 结构 : handling multiple types for a single property

c# - Visual Studio 2012 : List of all Methods in class

c# - 如何将 Umbraco CMS 从使用 SQL Server CE 升级到 SQL Server 的升级版本?