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