C# 如何通过可观察集合进行迭代?

C# 如何通过可观察集合进行迭代?,c#,wpf,datagrid,overriding,observablecollection,C#,Wpf,Datagrid,Overriding,Observablecollection,大家好,我想问一下,我有一个具有如下属性的类: public class VLANSPropertyClass { public string vname { get; set; } public int S_No { get; set; } public string vid { get; set; } public string ip { get; set; } public string vports { get; set; } }

大家好,我想问一下,我有一个具有如下属性的类:

public class VLANSPropertyClass
  {
    public string vname { get; set; }

    public int S_No { get; set; }

    public string vid { get; set; }

    public string ip { get; set; }

    public string vports { get; set; }
  }
我创建了一个ObservableCollection,如下所示:

  public ObservableCollection<VLANSPropertyClass> vlan { get; set; }
  vlan = new ObservableCollection<VLANSPropertyClass>();
显示如下图所示:

现在我想遍历每一行并读取它的值。我尝试了以下操作,但没有成功

foreach(VLANSPropertyClass v in vlan)
   {
     Console.WriteLine(v);
     Console.WriteLine();
    }

请告诉我从ObservaleCollection/Datagrid读取值的可能方法。任何帮助都将非常有用。

您可以将您的类更改为此

  public class VLANSPropertyClass
    {
        public string vname { get; set; }

        public int S_No { get; set; }

        public string vid { get; set; }

        public string ip { get; set; }

        public string vports { get; set; }
        public override string ToString()
        {
            return String.Format("Name: {0}, Serial {1}", vname, S_No);
        }
    }
此更改包括对ToString方法的重写。只要框架需要类的字符串表示,就会调用它

ToString是.NET Framework中的主要格式化方法。信息技术 将对象转换为其字符串表示形式,以使其适合 用于显示。有关.NET中格式支持的信息,请参见 框架,请参见格式化类型

资料来源:


使用对ToString的覆盖将允许您在Console中执行此操作;具有预期的结果。

当您在ObservableCollection中循环时,通过索引访问它会以字符串的形式返回集合的完整实例/项,您现在需要使用索引或属性引用此字符串(如果是用户定义的typeclass),以便访问真正的内容,在我的例子中,我这样做是为了访问集合项的temp属性

mess[mj_key][mn_key][0].Temp.ToString()
这里我有3个维度,暂时避免,只需了解0索引返回字符串对象,然后使用.Temp访问温度


希望有帮助

我无法从datagrid中逐行提取值。每一行都应该像单独的对象一样读取。是否将datagrid绑定到可观察的集合?是的..datagrid工作正常我只想从datagrid中获取每一行值并将其写入控制台!行中的数据与集合中的数据相同。所以foreach中的每个v都是datagrid中行的数据。类似地,对于其他属性,您至少可以说出-1的原因,因为我分享了我所做的。谢谢
mess[mj_key][mn_key][0].Temp.ToString()