【问题标题】:Get values out of an object into properties of another class从一个对象中获取值到另一个类的属性中
【发布时间】:2017-03-08 14:55:00
【问题描述】:

我有一个网格视图

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

我有一个返回对象列表的脚本。

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

我的 Temp 是我选择的 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 的值,但是如何获取 AILEVILLE 的值?

Temp[0].GetType(); 的值为:

提前致谢

【问题讨论】:

  • 您可以使用typeof 访问以查看object 的具体类是什么吗?然后投射到对象中
  • 你得到数组的值。只需使用索引读取第二个:oItem[1].
  • 你能做Temp[0].GetType()并发布结果吗?
  • 我把它作为图片发布
  • @Soft8Stev 最后的信息实际上是必不可少的 ;)

标签: c# arrays object


【解决方案1】:

好吧,我是这么认为的,所以正如 cmets 中已经提到的,每个对象内部都有一个对象数组,因此您需要首先将列表中的每个对象转换为一个对象数组: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);
}

【讨论】:

    【解决方案2】:

    问题在于您的class 与您获取的数据的结构不匹配,因此无法将其强制转换。

    您为什么不直接遍历结果并构建该类的新实例?

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

    您需要向Pers_InseeZone 类添加一个构造函数,并在那里分配变量。

    【讨论】:

    • 谢谢,但我无法索引 oItem,因为它是一个对象。
    猜你喜欢
    • 2021-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多