Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取列表中元素的索引<;T>;在c中#_C#_.net - Fatal编程技术网

C# 如何获取列表中元素的索引<;T>;在c中#

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(理想情况下为相同

我有一个列表,其中有一些元素,比如B、C、D。 我想得到B的索引。 我怎样才能得到它

我想用C#来做这件事。

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

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