错误95'System.Array'不包含'FindIndex'的定义

时间:2013-03-07 08:09:01

标签: c# arrays windows-phone-7 windows-phone-8

我正在将现有的Windows Phone 8应用程序转换为WP 7.1。但是我遇到了错误

'System.Array' does not contain a definition for 'FindIndex'

在这一行。我错过了什么?

index = Array.FindIndex(AnswerLevelArr, s => s.Contains(CurrentFileName));

3 个答案:

答案 0 :(得分:3)

Windows Phone 7.1不支持

Array.FindIndex Method (T[], Predicate)

  

版本信息

     

Windows Phone OS
  受以下支持:8.0

相反,您可以使用Linq(确保将using System.Linq;添加到文件顶部):

index = AnswerLevelArr
    .Select((i, position) => new { Item = i, IndexOf = position })
    .First(s => s.Item.Contains(CurrentFileName)).IndexOf;

或:

int index=0;
var result = AnswerLevelArr.SkipWhile((s, ind) =>
{
    if (!s.Contains(CurrentFileName))
    {
        index++;
        return false;
    }
    else
    {
        return true;
    }
}).First();

答案 1 :(得分:1)

根据msdn

public static int FindIndex<T>(
    T[] array,
    Predicate<T> match
)

http://msdn.microsoft.com/en-us/library/03y7c6xy.aspx

您需要包含类型吗?

编辑:index = Array.FindIndex<T>(AnswerLevelArr, s => s.Contains(CurrentFileName));

EDIT2:留下历史记录,但在进一步检查后出错了......

如果您想要一个与您的方法类似的查找索引,则可以提供覆盖

int FindIndex(string s)
{
    int size = this.length;
    for(int i = 0; i < size; i++)
    {
    if(this[i] = s)
        return i;
     }
     return -1;
}

答案 2 :(得分:1)

来自Array.FindIndex<T> Method (T[], Predicate<T>)

Version Information
Windows Phone OS
Supported in: 8.0

Windows Phone 7.1

中看起来不支持此方法