1

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

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

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

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

3 回答 3

3

Windows Phone 7.1 不支持Array.FindIndex 方法(T[],谓词) 。

版本信息

Windows Phone 操作系统
支持: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();
于 2013-03-07T08:17:14.800 回答
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;
}
于 2013-03-07T08:11:01.677 回答
1

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

Version Information
Windows Phone OS
Supported in: 8.0

看起来这种方法不支持Windows Phone 7.1

于 2013-03-07T08:18:49.803 回答