如何获取c#</t>中List <t>中的元素索引

时间:2010-08-12 04:53:13

标签: c# .net

我有一个列表有一些像A B C D的元素。 我想得到B的索引。 我怎么能得到它?

我想在C#中执行此操作。

5 个答案:

答案 0 :(得分:16)

这个可以简单如下:

int index = list.IndexOf(b);

其中b是要找的东西,然而这里对等式的定义存在歧义。默认情况下,类将使用引用相等性。一个常见的错误是创建两个具有相同字段的类实例,并期望它们计为相等。为此,您应该覆盖Equals(并且理想情况下为同一IEquatable<T>实施T。如果您覆盖Equals,则还应覆盖GetHashCode理想情况下 ==!=运营商。

另一种方法是找到与谓词或比较器的匹配,这可以避免所有工作

答案 1 :(得分:10)

假设您有4个元素,如A,B,C,D。

List Char = new List();             Char.Add( “A”);             Char.Add( “B”);             Char.Add( “C”);             Char.Add( “d”);

        int index = Char.IndexOf("B");

所以输出为1.(B的索引)

我希望这会对你有所帮助。

答案 2 :(得分:2)

答案 3 :(得分:0)

简单试试这个 假设您的列表名称是objList;然后

int index = objList.IndexOf("B");

答案 4 :(得分:0)

当你有一个复杂类型列表时,事情变得有点复杂。您需要知道列表中的多个对象具有相同的参数,例如。列表中可能只有“A”。这一切都归结为查询列表。

我经常使用,例如

var results = (from i in people
               where i.name == "Alexander" //here you put your predicate
               select myList.indexOf(i));

var results = people.Where(p=>p.name == "Alexander"); //this gives You full objects, not indices

这样我就拥有所有名字为“亚历山大”的人的指数列表。你可以遍历它,获得一个或任何一个。

请记住,列表可以包含您要查找的值的多个索引。