我正在尝试将数据从SQL传递到C#,然后传递到R服务器进行数据分析,最后再返回到我的Web应用程序; 但是,我正在使用的COM接口不允许在C#和R之间传递复杂的数据类型(没有数据表)。 我曾经通过使用以下代码使其正常工作:
int count = dataTable.Rows.Count;
object[] y = new object[count];
object[] x = new object[count];
//R does not accept DataTables, so here we extract the data from
//the table and pass it into 2 double arrays.
for (int i = 0; i < count; i++)
{
y[i] = Convert.ToDouble(dataTable.Rows[i][0]);
x[i] = Convert.ToDouble(dataTable.Rows[i][1]);
}
//Instantiate R connection
StatConnector r = new STATCONNECTORSRVLib.StatConnectorClass();
r.Init("R");
r.SetSymbol("y", y); //Passes column y into R
r.SetSymbol("x", x); //Passes column x into R
我的问题现在出现了,因为我不再局限于仅使用double类型,从SQL数据库中获取的任何数据都可以使用(int、varchar等),而且我不再只调用2列数据(它可以是用户指定的任意数量)。
如何将一个动态大小和动态数据类型的datatable转换为一个数组,以便安全地传递到rcom中?