C# 选择正确的数据结构enum/struct/class?

C# 选择正确的数据结构enum/struct/class?,c#,.net,data-structures,C#,.net,Data Structures,我正在分析一个如下所示的文件: test_data = { { id = '001-000505', cnv = { e9 = 0, i6 = 0, }, rel = { rs10850985 = '-', rs38932097 = '-', rs5030655 = '-', rs10655852 = '-', rs28371725 = '-', }, result = '*5/*5', gt = { r

我正在分析一个如下所示的文件:

test_data = {
{
  id = '001-000505',
  cnv = {
    e9 = 0,
    i6 = 0,
  },
  rel = {
    rs10850985 = '-',
    rs38932097 = '-',
    rs5030655 = '-',
    rs10655852 = '-',
    rs28371725 = '-',
  },
  result = '*5/*5',
  gt = {
    rs31080985 = { '-', '-' },
    rs16947 = { '-', '-' },
    rs3892097 = { '-', '-' },
    rs503350655 = { '-', '-' },
    rs50530865 = { '-', '-' },
    rs5030656 = { '-', '-' },
    rs106371706 = { '-', '-' },
    rs59421388 = { '-', '-' },
    rs7693258 = { '-', '-' },
    rs28371725 = { '-', '-' },
  },
},
{
  id = '004-AATTGG',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs3892097 = '>>',
    rs505306d55 = '>>',
    rs1065852 = '>>',
    rs2837d1725 = '>>',
  },
  result = '*1/*5',
  gt = {
    rs10830985 = { 'C', 'C' },
    rs164947 = { 'C', 'C' },
    rs3892097 = { 'G', 'G' },
    rs5030e655 = { 'T', 'T' },
    rs5030865 = { 'G', 'G' },
    rs5030656 = { 'AAG', 'AAG' },
    rs1065852 = { 'C', 'C' },
    rs28371706 = { 'C', 'C' },
    rs59421388 = { 'G', 'G' },
    rs769258 = { 'G', 'G' },
    rs28371725 = { 'G', 'G' },
  },
},
{
  id = '003-0300101',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs3892097 = '>>',
    rs50530655 = '>>',
    rs10365852 = '>>',
    rs283271725 = '<<',
  },
  result = '*41/*5',
  gt = {
    rs1080985 = { 'C', 'C' },
    rs16947 = { 'T', 'T' },
    rs3892097 = { 'G', 'G' },
    rs5030655 = { 'T', 'T' },
    rs5030865 = { 'G', 'G' },
    rs5030656 = { 'AAG', 'AAG' },
    rs1065852 = { 'C', 'C' },
    rs28371706 = { 'C', 'C' },
    rs593421388 = { 'G', 'G' },
    rs7659258 = { 'G', 'G' },
    rs28371725 = { 'A', 'A' },
  },
},
{
  id = '007-CCAA',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs38922097 = '>>',
    rs50350655 = '>>',
    rs1065852 = '>>',
    rs283371725 = '<<',
  },
  result = '*41/*5',
  gt = {
    rs1080985 = { 'C', 'C' },
    rs16947 = { 'T', 'T' },
    rs3892097 = { 'G', 'G' },
    rs50350655 = { 'T', 'T' },
    rs50350865 = { 'G', 'G' },
    rs5030656 = { 'AAG', 'AAG' },
    rs106235852 = { 'C', 'C' },
    rs28371706 = { 'C', 'C' },
    rs59421388 = { 'G', 'G' },
    rs769258 = { 'G', 'G' },
    rs28371725 = { 'A', 'A' },
  },
},
{
  id = '001-000105',
  cnv = {
    e9 = 1,
    i6 = 1,
  },
  rel = {
    rs1080985 = '>>',
    rs38392097 = '>>',
    rs5030655 = '>>',
    rs10565852 = '>>',
    rs283371725 = '>>',
  },
  result = '*1/*5',
  gt = {
    rs10820985 = { 'C', 'C' },
    rs16947 = { 'C', 'C' },
    rs32892097 = { 'G', 'G' },
    rs53030655 = { 'T', 'T' },
    rs50303865 = { 'G', 'G' },
    rs50530656 = { 'AAG', 'AAG' },
    rs1065852 = { 'C', 'C' },
    rs283751706 = { 'C', 'C' },
    rs59421388 = { 'G', 'G' },
    rs769258 = { 'G', 'G' },
    rs28371725 = { 'G', 'G' },
  },
},
我不认为这是正确的解决方案,因为我想说

string somestring=LuaStructure.gt.rs1080985;
这是不可能的,因为我需要先申报

LuaStructure somestructure = new LuaStructure;
那我就要做了

LuaStructure.gt somestructuregt = new LuaStructure.gt;
我不想经历整个过程



我需要什么样的类/结构/枚举组合来捕获我想要的数据?

struct
s中这样做对您没有好处,因为属性/类型需要显式解析和赋值。我倾向于避免这种情况,但使用正则表达式或基本字符串操作将输入转换为JSON实际上可能会带来好处,因为格式非常接近。这样做,您至少可以利用现有的解析器来为您处理繁重的工作。

struct
s中这样做不会给您带来好处,因为属性/类型需要显式解析和赋值。我倾向于避免这种情况,但使用正则表达式或基本字符串操作将输入转换为JSON实际上可能会带来好处,因为格式非常接近。这样做,您至少可以利用现有的解析器为您处理繁重的工作。

这种结构太糟糕了。祝你好运你有没有考虑过在对象创建过程中使用属性初始值设定项?@哎哟,你说得对,太糟糕了,你能建议一些更有用的吗:)@哎哟,你能告诉我你的意思吗?我不知道如何对嵌套数据进行初始化
newsomeobject{PropertyA=“”,PropertyB=1234,NestedObject=newanotherobject{InnerValue=123}
这不是一个真正的答案,所以我很抱歉在注释中发布它。@真的该对象是一个类吗?你能告诉我你的回答是什么意思吗?非常感谢你,这个结构太糟糕了。祝你好运你有没有考虑过在对象创建过程中使用属性初始值设定项?@哎哟,你说得对,太糟糕了,你能建议一些更有用的吗:)@哎哟,你能告诉我你的意思吗?我不知道如何对嵌套数据进行初始化
newsomeobject{PropertyA=“”,PropertyB=1234,NestedObject=newanotherobject{InnerValue=123}
这不是一个真正的答案,所以我很抱歉在注释中发布它。@真的该对象是一个类吗?你能告诉我你的回答是什么意思吗?非常感谢你的回答。你能告诉我如何使用regex实现这一点吗?这似乎有点超出了你的问题范围(因此你需要在自己尝试解决它之后再问另一个问题)。此外,你不需要我对正则表达式的建议(我知道的只是多一点,足以把我后面的人搞得一团糟)。看一看JSON规范。格式几乎匹配,简单的字符串操作可能就可以了。谢谢。你能告诉我怎么配吗?这似乎不是一场比赛,梅说这是一场势均力敌的比赛。将
=
替换为
,将单引号替换为双引号,它看起来非常像一系列JSON集合(集合)。我只需要替换分号和引号?然后就是json?非常感谢你的回答。你能告诉我如何使用regex实现这一点吗?这似乎有点超出了你的问题范围(因此你需要在自己尝试解决它之后再问另一个问题)。此外,你不需要我对正则表达式的建议(我知道的只是多一点,足以把我后面的人搞得一团糟)。看一看JSON规范。格式几乎匹配,简单的字符串操作可能就可以了。谢谢。你能告诉我怎么配吗?这似乎不是一场比赛,梅说这是一场势均力敌的比赛。将
=
替换为
,将单引号替换为双引号,它看起来非常像一系列JSON集合(集合)。我只需要替换分号和引号?然后就是json了?
LuaStructure.gt somestructuregt = new LuaStructure.gt;