我有一个列表有一些像A B C D的元素。 我想得到B的索引。 我怎么能得到它?
我想在C#中执行此操作。
答案 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
这样我就拥有所有名字为“亚历山大”的人的指数列表。你可以遍历它,获得一个或任何一个。
请记住,列表可以包含您要查找的值的多个索引。