[英]How to convert List of objects to a specific type Array in C#
我们有第三方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类型的数组。
有什么提示吗?
谢谢!
我们有一个存储过程,它给出以下输出
哇...很有趣 (1)
无论您在这里尝试做什么,都注定会失败。 让您的数据库完成工作并提供特定的值,例如两列,一列使用testVar,另一列使用testVar2。 然后在您的代码中构建一个new TestData
并分配这两个值。
如果您不能更改数据库接口(在这种情况下,我强烈建议您考虑不与为下一个项目设计它的人一起工作),则至少获取一个正则表达式,解析出两个值,然后在代码中自己创建对象。
有两种或三种不同的方法可以完成这项工作,但是所有方法都比其价值更复杂。 从数据库中获取数据并从数据库中构建对象是真正的基础,并且在已有轮子可以使用时,您不应该重新发明黑洞量子引擎反重力场。
(1)(我将保留它以不违反新的CoC)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.