使用C#从ColdFusion QueryBean获取值的最佳方法是什么?

时间:2012-09-24 16:09:46

标签: c# coldfusion

我不得不调用返回QueryBean的ColdFusion Web服务。它返回一组具有我正在寻找的值的复杂数组。当我打电话时,我得到了我期待的数组中的所有数据,但现在我正在尝试获取数据并且它一直告诉我我缺少某些东西或者我不能使用对象的索引。

我在VS2010中创建了一个名为DAM_Search的Web引用,我用这个命令调用它;

DAM_Folder.folderService obj_Folder = new DAM_Folder.folderService();
DAM_Folder.QueryBean qBean = bj_Folder.getfolder("1-Key", str_Folder_ID);

我得到的是qBean,其中包含4个数组,前两个数组是

qBean.columnList[10]
qBean.columnListField[10]

并包含数据行中使用的字段的名称。接下来它有

qBean.data[4]
qBean.dataField[4]

这是返回数据的地方。在上面的示例中,qBean返回4行数据。数据位于一个数组中,其中包含columnList[10]中指定的列的值。

我认为,由于一张图片值1000字,这可能会有所帮助。

qBean Capture http://sapp-family.com/forums/qBean_Capture.jpg

我现在要做的是从qBean.data[0][0]的内部数组中获取数据。在立即窗口中,当我尝试? qBean.data[0]时,它返回正确的值数组。

我试过以下

? qBean.data[0][0] 
"Cannot apply indexing with [] to an expression of type 'object'"

? qBean.data[0].[0]
Identifier expected

? qBean.data[0,0]
Wrong number of indices inside []; expected 1

所以,我的Stackoverflow用户,我需要做什么来获取这个对象的值?我觉得这很简单,我只是在思考它,但现在只是把我推到了墙上。

2 个答案:

答案 0 :(得分:0)

我会尝试qBean.data [0] [0] .toSting()

答案 1 :(得分:0)

好的,所以我得到了跟踪,并且没有返回并通过解决方案更新原始问题。对不起...

我对此问题的解决方案是将qBean.Data[0]转换为IEnumerable对象。然后我通过foreach循环运行它,它将数据提供给一个我可以传递回调用函数的数组。例如;

string[] FileData = new string[0];            
foreach (var var_Value in (IEnumerable)qBean.data[0])
        {
            Array.Resize<string>(ref FileData, FileData.Length + 1);
            FileData[FileData.Length-1] = var_Value.ToString();
        }

现在我知道这有效,我将从QueryBean中的另一个数组中提取一个计数,并在我开始FileData[]之前设置foreach大小,所以我不需要复制数组21次,Array.Resize<>。虽然目前我处理的数据很少,但我不知道将来会发生什么。