簡體   English   中英

將值從對象中獲取到另一個類的屬性中

[英]Get values out of an object into properties of another class

我有一個gridview

INSEE1  Commune
------  -------
10002   AILLEVILLE
10003   BRUN

我有一個返回對象列表的腳本。

List<object> Temp = ASPxGridView_Insee.GetSelectedFieldValues("INSEE1");

我的溫度是我選擇的INSSE1對象的列表。

但是現在我也添加了Commune,所以我的腳本變成了:

List<object> Temp = ASPxGridView_Insee.GetSelectedFieldValues("INSEE1","Commune");

而我的Temp是INSEE1和Commune的對象列表,請參見圖片:

在此處輸入圖片說明

我如何才能加入10002和AILLEVILLE?

我嘗試將其轉換為我的Pers_INSEE類:

public class Pers_InseeZone
{
    string _Code_Insee;
    public string Code_Insee
    {
        get { return _Code_Insee; }
        set { _Code_Insee = value; }
    }

    string _Commune;
    public string Commune
    {
        get { return _Commune; }
        set { _Commune = value; }
    }
}

foreach (var oItem in Temp )
                {
Pers_InseeZone o = (Pers_InseeZone)oItem;

}

但我不工作,我無法施展。 我已經這樣嘗試過:

foreach (var oItem in Temp )
{
    var myTempArray = oItem as IEnumerable;

    foreach (var oItem2 in myTempArray)
    { 
        string res= oItem2.ToString();

....

res = 10002的值res = 10002 ,但是如何獲取AILEVILLE的值?

Temp[0].GetType(); 是:

在此處輸入圖片說明

提前致謝

好的,我想是這樣,因此如注釋中所述,每個對象內部都有一個對象數組,因此您需要首先將列表中的每個對象轉換為對象數組: object[]然后才能訪問每個部分。 這是一個重現您的問題的示例:

object[] array = new object[] {10002, "AILEEVILLE"};    
List<object> Temp = new List<object> {array};

在此處輸入圖片說明

解決方法:

// cast here so that the compiler knows that it can be indexed
object [] obj_array = Temp[0] as object[];

List<Pers_InseeZone> persList = new List<Pers_InseeZone>();

Pers_InseeZone p = new Pers_InseeZone()
{
    Code_Insee = obj_array[0].ToString(),
    Commune = obj_array[1].ToString()
};

persList.Add(p);

應用於您的代碼,它將看起來像這樣:

List<object> Temp = ASPxGridView_Insee.GetSelectedFieldValues("INSEE1","Commune");
List<Pers_InseeZone> persList = new List<Pers_InseeZone>();

foreach (object oItem in Temp )
{
    object [] obj_array = oItem as object[];

    Pers_InseeZone p = new Pers_InseeZone()
    {
        Code_Insee = obj_array[0].ToString(),
        Commune = obj_array[1].ToString()
    };

    persList.Add(p);
}

問題歸結為您的class與您獲取的數據不匹配相同的結構,因此無法將其強制轉換為事實。

相反,為什么不只是遍歷結果並構建該類的新實例呢?

var tempList = new List<Pers_InseeZone>();
foreach (var oItem in Temp)
{
    tempList.Add(new Pers_InseeZone(oItem[0], oItem[1]));
}

您將需要向Pers_InseeZone類添加一個構造函數,然后在其中分配變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM