如何在 C# 中创建具有对象相似类型的列表的类型数组



我们有第三方类,它只接受对象数组。

第三方类 :

public class Test
{
public class Input
{
public int testVar { get; set; }
public int testVar2 { get; set; }
}
//some methods
public static List<someType> Convert(Input[] data)
{
//execute some steps 
}
}

在数据库中,我们有我们感兴趣的数据列,它有数千条记录。

Id        data
1   new Test.Input{ testVar=12,testVar=19}
2   new Test.Input{ testVar=16,testVar=12}
3   new Test.Input{ testVar=26,testVar=11}
-

我正在尝试创建一个类并通过提供输入类型对象的数组来调用测试类的转换方法。

public class ImplementTest
{
public void CallConvert()
{
// get the data from DB in list
List<object> Input = 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())
{
Input.Add(dr["data"]);
}
}
}
}
//convert list object to input type object  
var inputs = new Test.Input[]
{
//how to pass Input list efficiently
};
var output = Test.Convert(inputs).ToArray();
}
}

任何人都可以帮助我将输入列表对象传递给有效地创建对象数组吗?

谢谢!

您可以使用映射器方法:

public Input MapRow(IDataRecord row)
{
return new Input
{
Name = row["Name"].ToString(),
Number = int.Parse(row["Number"].ToString())
};
}

并像这样使用它:

public void CallConvert()
{
// get the data from DB in list
List<Input> inputs = new List<Input>();
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())
{
inputs.Add(MapRow(dr));
}
}
}
}
var output=Test.Convert(inputs.ToArray());
}

为了使它正常工作,您的存储过程应返回一个输入表,在本例中,两列(Name, Number)

最新更新