2010-12-07 123 views
3

列表中的特定項目的索引我有一個整數的列表,從1到20,我想這是大於10使用LINQ中的索引。 linq有可能嗎?查找使用LINQ

預先感謝

回答

8

使用Select過載,其包括索引:

var highIndexes = list.Select((value, index) => new { value, index }) 
         .Where(z => z.value > 10) 
         .Select(z => z.index); 

反過來的步驟:

  • 項目值的序列插入的值的序列/索引對
  • 過濾爲僅包括對其中的值是大於10
  • 項目的結果指標
+0

飛碟雙向感謝您的回覆@喬恩的序列是否有可能使用LINQ – ratty 2010-12-07 07:32:40

+0

以檢索兩列(就像我們從數據庫中檢索) @ratty,它可以通過選擇,閱讀101 LINQ示例(谷歌它)瞭解。 – 2010-12-07 07:49:32

1
public static List<int> FindIndexAll(this List<int> src, Predicate<int> value) 
    { 
     List<int> res = new List<int>(); 
     var idx = src.FindIndex(x=>x>10);   
     if (idx!=-1) { 
     res.Add(idx); 
     while (true) 
     { 
      idx = src.FindIndex(idx+1, x => x > 10); 
      if (idx == -1) 
       break; 
      res.Add(idx); 
     } 
     } 
     return res; 
    } 

使用

 List<int> test= new List<int>() {1,10,5,2334,34,45,4,4,11}; 
     var t = test.FindIndexAll(x => x > 10);