2011-12-18 81 views
0

我已经创建了一个简单的应用程序,用于从Access数据库获取问题并将答案存储到另一个Access数据库。我不确定客户想问什么问题,所以我不能硬编码这个数字。Visual Basic 2010:通过具有类似名称的属性进行迭代?

因此,答案表的列名(除了第一个,最后一个名字等用户信息)将是a1,a2,a3 ... aN。

最后问题!

出于测试目的,我已经硬编码了节约优先3个的答案是这样的:

newEntry.a1 = answers(0) 
newEntry.a2 = answers(1) 
newEntry.a3 = answers(2) 

现在我想基于“A型”特性计数通过所有属性迭代:

'aCount is number of "a-type" properties 
For i = 0 To aCount - 1 
    Dim property As String 
    property = "a" & (i + 1) 
    newEntry.property = answers(i) 
Next 

当然,上面的代码不起作用,它只是一个伪代码的想法,“应该”与我的硬编码示例相同。

是否有可能以这种方式迭代newEntry对象的预定义属性?

我希望我的问题很清楚。非常感谢您提前!

+1

不要让破碎的dbase表格设计破坏您的代码。也许你应该先修好桌子。 – 2011-12-18 10:31:33

回答

0

是的,有使用反射,你最好使用集合来存储你的答案。

很多,你能做到这一点的方式,但

Dictionary<String,List<String>> would be an easy first choice then 

伪代码

for(int index = 0; index<aCount; index++) 
{ 
    newEntries.Add["A"].Add(answers[index]); 
} 

所以A4简直是newEntries [ “A”] [3];