2011-04-13 64 views
0

說我有以下BitArray combinedResults = searchBitArray.And(genreBitArray);從位陣列獲取正位指數

其中包含了積極位即100100110000

我怎樣才能得到所有的積極因素的指標?

+0

怎麼辦以後需要使用該位的位置?你能給出一個你想看到的結果類型的例子,以及給出所提供的數組,你會用它做什麼? – 2011-04-13 15:20:41

+0

基本上我想找到正位的所有索引,因爲這些提供索引到我有的搜索索引(Lucene.NET)。基本上,我想在屏幕上顯示所有積極的指標,因爲這些是搜索結果 – StevieB 2011-04-13 15:25:22

+0

那麼你想要回來?列表? – 2011-04-13 15:28:30

回答

0

這裏有一個第一,決然貧民區,破解它:

BitArray ba = new BitArray(new bool[] {true,false,false,true,false,false,true,true,false,false,false,false}); 
List<int> pos = new List<int>(); 
for (int i = 0; i < ba.Length; i++) 
{ 
    if (ba[i]) 
     pos.Add(i); 
} 

這將使你含0,3,6,7列表您可以在ba.Length開始 - 1和減下來如果您需要從右向左閱讀,則爲零。

編輯:包在一個擴展方法,只是因爲:

void Main() 
{ 
    BitArray ba = new BitArray(new bool[] {true,false,false,true,false,false,true,true,false,false,false,false}); 

    List<int> positives = ba.GetBitPositions(true); 
    List<int> negatives = ba.GetBitPositions(false); 
} 

public static class BitArrayExtensions 
{ 
    public static List<int> GetBitPositions(this BitArray ba, bool MatchCondition) 
    { 
     List<int> pos = new List<int>(); 

     for (int i = 0; i < ba.Length; i++) 
     { 
      if (ba[i] == MatchCondition) 
       pos.Add(i); 
     } 

     return pos; 
    } 
} 
+0

很酷,工作很好,謝謝你的 – StevieB 2011-04-13 15:53:49