2013-03-07 126 views
1

我将现有的Windows Phone 8应用程序转换为WP 7.1。但是我遇到了一个错误错误'System.Array'不包含'FindIndex'的定义

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

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

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

回答

3

Array.FindIndex Method (T[], Predicate)在Windows Phone 7.1中不受支持。

版本信息

的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(); 
+0

啊..我明白了。你有任何建议,像这样的快速解决方法? – PutraKg 2013-03-07 08:20:48

+0

我尝试了第一个,但它说'System.Array不包含Select ...的定义'第二个不包含SkipWhile的定义。像这样的简单陈述可以工作吗? 'index = Array.IndexOf(AnswerLevelArr,CurrentFileName);' – PutraKg 2013-03-07 09:02:08

+2

您必须在文件的顶部添加'using System.Linq;'。 – 2013-03-07 09:04:05

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; 
} 
+0

不支持,我想你的建议,但它不工作。 FindIndex未在WP 7.1 Visual Studio 2012的智能感知中列出,但它在创建WP 8应用程序时已存在。 – PutraKg 2013-03-07 08:16:19

+0

由于其他两个答案已经说过,它确实不支持Windows Phone 7或7.1。 – Abbas 2013-03-07 08:23:17

+0

啊我appologise,没有多久起床^。^,如果这不是为wp7然后将是有效的.. – Sayse 2013-03-07 08:37:20

相关问题