获取数组中特定项的索引

时间:2010-12-08 14:31:22

标签: c# arrays

我想检索一个数组的索引,但我只知道数组中实际值的一部分,例如我在数组中动态地存储作者名称说“author ='xyz'” 我想找到包含类似作者的数组项的索引,因为我不知道值部分如何执行此操作。

5 个答案:

答案 0 :(得分:115)

您可以使用FindIndex

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

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

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

也许您需要使用regular expression进行匹配?

答案 1 :(得分:10)

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

答案 2 :(得分:9)

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

答案 3 :(得分:7)

以前的答案只有在您知道要搜索的确切值时才有效 - 问题表明只知道部分值。

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

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

答案 4 :(得分:0)

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"

Here's a fiddle with it.


奖金:扩展名索引

我首先写这篇文章的原因是没有正确阅读问题...

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"

Here's a fiddle with it.