簡體   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