问题描述
提前道歉很长时间。我遇到的问题超出了我的薪水等级(我这样做主要是为了娱乐!),我们将不胜感激。我会尝试将其精简到本质,但是我什至不确定我是否能够正确地做到这一点。
基本上,我想从Excel电子表格中读取数据表并将其存储在数组中。
该表格将具有多个维度,例如性别(M,F),年龄(0,1,2,…)和受教育程度(带有类似P1,P2,P3的代码)以及与之相关的数值尺寸。 对于特定的组合,例如只有一个条目。 M 23 P1只会出现一次。
问题在于表格可以以各种格式存储,例如
Sex Age Education Count
M 23 P1 90125
F 23 P1 67232
或
Education Sex Age Count
P1 M 23 90125
P1 F 23 67232
甚至
Age Education Male Female
23 P1 90125 67232
24 P1 92456 68259
(但现在,我认为我们可以忽略这一点,而只关注维度/关键字段出现在不同列中的情况)
在读取任何特定表时,我会知道它的存储结构,但是我当然希望将它们全部存储在代码中的相同结构中。
- 读取实际的尺寸值,该值可以是字符串(性别或教育程度)或整数(年龄)
- 检查尺寸值是否允许,并将其转换为索引值。例如。如果性别字段包含Q,则将返回错误,但是如果包含F,则将返回0,如果包含M,则将返回1(因为我将存储索引值为0的女性和索引值为1的男性)
我的想法是创建代表大小为3的数组。根据字段顺序,委托实例将读取该值并返回一个字符串(用于性别或教育)或一个整数(用于年龄) 然后,我将有第二个委托数组,它将进行适当的检查。 例如如果关键领域的顺序是性别,年龄和受教育程度,那么我会选择类似
public delegate int Check(...)
…
Check[] ArrayOfChecks[] = new Check[3]();
ArrayOfChecks[0] = CheckSex(sex); //public int CheckSex(string sex)
ArrayOfChecks[1] = CheckAge(age); //public int CheckAge(int age)
ArrayOfChecks[2] = CheckEducation(education); //public int CheckSex(string education)
此方法的问题在于,用于检查的委托人的签名是不同的,因为某些委托要求传入字符串,而其他委托则需要int。 对于读入,我有一个类似的问题,除了它们都将传入相同的参数(要读取的单元格位置),但将返回字符串或整数(取决于字段值)
那么,有没有一种方法可以解决我的问题,即可以通过一系列具有不同签名的代表来解决这个问题?
再次道歉。我不精通C#,希望我已经解释了这个问题 我也对完全不同的解决方案持开放态度(尽管我仍然有兴趣了解我是否/如何做我打算做的事情:-)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)