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

100

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

例如,我在动态数组中存储作者名称,比如 "author = 'xyz'"。现在我想要找到包含它的数组项的索引,但我不知道值的部分。

如何做到这一点?


你是使用 Array 还是 string[] - hunter
这是一个string[],我想查找Array.Indexof(arrFilter, "author")中的某些内容,但“author”并不是完整的值,而只是完整值的一部分。 - Mac
1
可能是在数组中查找值的索引的重复问题。 - bluish
5个回答

170
你可以使用 FindIndex
 var index = Array.FindIndex(myArray, row => row.Author == "xyz");

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

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

也许你需要使用正则表达式来匹配?


可以将这个数组扩展进行改进,以便更加方便地使用和智能感知。 - Mikael Dúi Bolinder

16

尝试使用Array.FindIndex(myArray, x => x.Contains("author"));


15
     int i=  Array.IndexOf(temp1,  temp1.Where(x=>x.Contains("abc")).FirstOrDefault());

10

之前的回答仅适用于您已知要搜索的确切值-该问题说明只知道部分值。

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

这将返回第一个包含 "xyz" 的项目的索引。


7

查找索引扩展

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 扩展方法

我一开始没有仔细阅读问题,所以写了这个...

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"

这里有一个使用它的代码片段。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接