2013-03-07 53 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

相關問題