【发布时间】:2018-09-20 23:40:06
【问题描述】:
我们有第三方Test类,它有一个方法“Convert”,它只接受DataSample数组。
public class Test{
public class DataSample{
public int testVar{get;set;}
public int testVar2{get;set;}
}
//some methods
public static List<someType> Convert(DataSample[] data)
{
//execute some steps
}
}
我们有一个存储过程,它给出以下输出。它基本上将对象创建结构存储在 col1 字段中
Id col1
1 new Test.DataSample{ testVar=24,testVar=11}
2 new Test.DataSample{ testVar=26,testVar=15}
3 null
4 null
5 new Test.DataSample{ testVar=28,testVar=11}
我正在尝试通过提供 DataSample 类型对象的数组来创建一个类并调用 Test 类的 Convert 方法。 数据类型对象如上所述存储在 col1 字段中。
Public class ImplementTest{
public void CallConvert(){
var inputs = new Test.DataSample[] { };
// get the data from DB in list
List<object> InputList = new List<object>();
using (SqlConnection con = new SqlConnection(conString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "dbo.ReadAll_Input";
con.Open();
using (SqlDataReader dr = cmd.ExecuteReader())
{
while (dr.Read())
{
InputList.Add(dr["col1"]);
}
}
}
}
//remove null
InputList.RemoveAll(x => x == DBNull.Value);
//create an array of Test.DataSample type
??
//call third party class
var ourput = Test.Convert(inputs).ToArray();
}
}
如何将 InputList 的所有对象传递给输入数组,以便它可以传递给只接受 DataSample 类型数组的第三方方法 Convert()?
或者有没有一种直接的方法可以在从存储过程中获取对象时创建一个 DataSample 类型的数组。
请问有什么提示吗?
谢谢!
【问题讨论】:
-
所以我想这不起作用,因为您试图将字符串
"new Test.DataSample{ testVar=24,testVar=11}"添加到 DataSample 类型的数组中? -
@stuartd,没错。
-
那么存储在数据库中的文本是一个表达式..?解析和调用时应该给你一个 DataSample 的实例?
-
@Dave,是的。它存储在第三方中,我们只能运行 SQL 查询和过程。
标签: c#