C# 如何获取列表中元素的索引<;T>;在c中#
我有一个列表,其中有一些元素,比如B、C、D。 我想得到B的索引。 我怎样才能得到它 我想用C#来做这件事。简单试试这个 假设您的列表名为objList;然后C# 如何获取列表中元素的索引<;T>;在c中#,c#,.net,C#,.net,我有一个列表,其中有一些元素,比如B、C、D。 我想得到B的索引。 我怎样才能得到它 我想用C#来做这件事。简单试试这个 假设您的列表名为objList;然后 int index = objList.IndexOf("B"); 这可以简单到: int index = list.IndexOf(b); 当发现b时,然而在平等的定义上存在歧义。默认情况下,类将使用引用相等。一个常见的错误是创建两个具有相同字段的类实例,并期望它们计数相等。要做到这一点,您应该真正覆盖Equals(理想情况下为相同
int index = objList.IndexOf("B");
这可以简单到:
int index = list.IndexOf(b);
当发现b
时,然而在平等的定义上存在歧义。默认情况下,类将使用引用相等。一个常见的错误是创建两个具有相同字段的类实例,并期望它们计数相等。要做到这一点,您应该真正覆盖Equals
(理想情况下为相同的T
实现IEquatable
)。如果重写等于
,则还应重写GetHashCode
,理想情况下,还应重写=
和=代码>运算符
另一种选择是使用谓词或比较器查找匹配项,这可以避免所有工作假设有4个元素,如a、B、C、D
List Char=新列表();
字符。添加(“A”);
字符。添加(“B”);
字符。添加(“C”);
字符。添加(“D”)
因此,输出将为1。(B的索引)
我希望这将对您有所帮助。当您有一个复杂类型列表时,事情会变得有点复杂。您需要知道列表中可以有多个具有相同参数的对象,例如,列表中可以有几个“A”。这一切都归结为查询列表
我经常使用
var results = (from i in people
where i.name == "Alexander" //here you put your predicate
select myList.indexOf(i));
或
这样,我就有了所有名字为“亚历山大”的人的索引列表。你可以通过它循环,得到一个或任何东西
请记住,列表中可以有多个您要查找的值的索引。他提供了-1,但我需要像0这样的索引,a 1表示B 2表示C,3表示D。您知道吗。小提示:由于问题被标记为C
,因此应该更好地阅读
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