获取数组中特定项目的索引


73

我想检索数组的索引,但是我只知道数组中实际值的一部分。

例如,我将一个作者姓名存储在数组中,动态说“ author ='xyz'”。
现在,我想找到包含它的数组项的索引,因为我不知道值部分。

这该怎么做?


您在使用Array还是string []
猎人2010年

它是一个字符串[],我想找到一些Array.Indexof(arrFilter,“ author”)在这里author不是完整值,而是完整值的一部分
Mac

Answers:


132

您可以使用FindIndex

 var index = Array.FindIndex(myArray, row => row.Author == "xyz");

编辑:我看到您有一个字符串数组,可以使用任何代码进行匹配,这里有一个简单的包含示例:

 var index = Array.FindIndex(myArray, row => row.Contains("Author='xyz'"));

也许您需要使用正则表达式进行匹配?


也可以使它成为数组扩展,以便于使用和使用IntelliSense。
MikaelDúiBolinder



8

仅当您知道要搜索的确切值时,以上答案才有用-该问题指出仅部分值是已知的。

Array.FindIndex(authors, author => author.Contains("xyz"));

这将返回包含“ xyz”的第一项的索引。


4

FindIndex扩展

static class ArrayExtensions
{
    public static int FindIndex<T>(this T[] array, Predicate<T> match)
    {
        return Array.FindIndex(array, match);
    }
}

用法

int[] array = { 9,8,7,6,5 };

var index = array.FindIndex(i => i == 7);

Console.WriteLine(index); // Prints "2"

这是一个小玩意儿。


奖励:IndexOf Extension

我首先写的是没有正确阅读问题...

static class ArrayExtensions
{
    public static int IndexOf<T>(this T[] array, T value)
    {
        return Array.IndexOf(array, value);
    }   
}

用法

int[] array = { 9,8,7,6,5 };

var index = array.IndexOf(7);

Console.WriteLine(index); // Prints "2"

这是一个小玩意儿。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.