.net 如何在C#中获取List中元素的索引< T>

ddrv8njm  于 2023-03-31  发布在  .NET
关注(0)|答案(6)|浏览(356)

我有一个列表,其中有一些元素,如A B C D。我想得到B的索引。我如何才能得到它?
我想用C#来做。

puruo6ea

puruo6ea1#

这个 * 可以 * 简单如下:

int index = list.IndexOf(b);

其中b是要查找的内容,然而这里的相等定义有歧义。默认情况下,类将使用引用相等。一个常见的错误是创建两个具有相同字段的类示例,并期望它们计数为 * 相等 。为此,你真的应该覆盖Equals(理想情况下,为相同的T实现IEquatable<T>)。如果你覆盖Equals,你也应该覆盖GetHashCode 理想情况下 * ==!=运算符。
另一种方法是使用 predicate 或比较器查找匹配项,这样可以避免所有这些工作

hsgswve4

hsgswve42#

假设你有4个元素,如A,B,C,D。
int count = new count();Char.Add(“A”);Char.Add(“B”);Char.Add(“C”);Char.Add(“D”);

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

因此输出将是1。(B的索引)
希望这对你有帮助。

1rhkuytd

1rhkuytd4#

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

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

xkrw2x1b5#

当你有一个复杂类型的列表时,事情会变得有点复杂。你需要知道你的列表可以有多个具有相同参数的对象,例如,列表上可以有几个“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

这样我就有了所有名字为“ Alexandria ”的人的索引列表。你可以循环遍历它,得到一个单独的索引或其他什么。
请记住,列表可以有您要查找的值的多个索引。

06odsfpq

06odsfpq6#

这里有一些很棒的答案,特别是@Marc Gravell,我正在扩展答案
假设但实际的设计。我们都把数据放在数据库中,需要
检索数据并显示它我最喜欢的是DataGridView
点击并检索我的数据。一个警告,这将是最好的工作,如果
在DGV中显示ID。如何根据ID索引显示数据
享受代码。

private void btnSL_Click(object sender, EventArgs e)
    {
        foreach (string str in vs)
        {
            var value = vs.Contains(udID.ToString());
            // value is bool USE to test for MATCH
            textBox1.Text = "var " + value + "";
            if(value == true)
            {
                int index = vs.IndexOf(udID.ToString());
                tbMessage.Text = vs[index] + " " + vs[index + 1] + " " + vs[index + 2];
            }
            else
            {
                tbMessage.Text = "That is NOT in the List vs";
            }
        }
    }

相关问题