2012-05-02 135 views
0

我有一個列表如下。我想檢索所有具有值1檢索通用列表項目索引

 List<int> listFilter = new List<int>(); 

     listFilter.Add(1); 
     listFilter.Add(0); 
     listFilter.Add(0); 
     listFilter.Add(1); 

我應該爲樣本數據上面越來越0和3項的指標。

下面的代碼給了我一個[value,index]對的對象。我如何修改它只輸出一個只有索引的列表。

 var val = listFilter.Select((value, index) => new { Value = value, Index = index }).Where(item => item.Value == 1).ToList(); 

感謝

問候, 巴蘭Sinniah

回答

3

的問題是,初始Select子句中你返回一個匿名類型。爲了恢復以後需要額外輸入Select的值以過濾回該值。

var val = listFilter 
    .Select((value, index) => new { Value = value, Index = index }) 
    .Where(item => item.Value == 1) 
    .Select(item => item.Index) 
    .ToList(); 
+0

工作很好..感謝 – balan

+0

第一個選擇是不需要的。 listFilter.Where(value => value == 1).Select((value,index)=> index).ToList()是相同的。 – samjudson

+0

@samjudson這也是我的第一個想法,但當我嘗試了它,我得到0,1作爲答案不是0,3。問題是where()創建一個只有2個條目的新枚舉,當我們從*選擇索引*時,我們得到0,1。第一個選擇需要從原始列表中捕獲索引。 – AlanT