2012-05-02 10 views
0

私は以下のリストを持っています。私は上記のサンプルデータの0と3を取得する必要がある値1一般的なリストの取得index

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

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

を持っているすべての項目のインデックスを取得したいと思います。

以下のコードは、私に[値、インデックス]ペアのオブジェクトを与えます。インデックスのみを持つリストを出力するには、これをどのように変更すればよいですか。

 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,3ではなく答えとして0,1を得ました。問題は、where()が2つのエントリだけを持つ新しいenumerableを作成し、* that *からインデックスを選択したときに0,1を得ることです。最初の選択は元のリストからインデックスを取得する必要があります。 – AlanT

関連する問題