繁体   English   中英

如何在C#中将对象列表转换为特定类型的数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM