首页 > 解决方案 > 有没有办法将对象的位置存储在对象内部的 C# 列表中?

问题描述

应该注意的是,列表中每个对象的字段可能无法相互区分,区分它们的最佳方法是通过 ID。如果一个对象的 ID 也可以是它在该列表中的索引,那将非常有帮助。

    //...

    receiveData(ClassA obj2Add) {
       maplist.Insert(0, obj2Add);       //Defined as a Maplist, which extends List<ClassA>, assume with no other fields of relevance
       Console.WriteLine(obj2Add.Index); //Should display zero.
    }
    
    class ClassA {
       string mapname {get;set;}
       int Index;               //Would reference this ClassA's position in maplist.
    }

有什么我可以添加到 ClassA 或 Maplist 类来实现这个目标的吗?

标签: c#listarraylistindexing

解决方案


仅当您的 ClassA ID 从 0 开始时才有可能,然后您可以执行以下操作:

 receiveData(ClassA obj2Add) {
       maplist.Insert(0, obj2Add);
       maplist=maplist.OrderBy(o=> o.Index).ToList();
       Console.WriteLine(obj2Add.Index);
    }

为什么你还需要那个?我猜你想通过maplist[id]

如果是这种情况,那么我建议使用

maplis.FirstOrDefault(f=>f.Index==id);

推荐阅读