0

私は3600アイテムのリストを持っています。たとえば、ファクター5を使用してそのリストを間引いてみたいので、(新しい)リストには720個のアイテムが残ります。しかし、リストの「コース」を変更することなく。開始点と終了点は常に同じである必要があります。

のように:1- >スキップ30- > 31

どうやってするか?

4

2 に答える 2

13

次のようなものにする必要があります:

var last = list.Count - 1;
var thin = list.Where ((item, i) => i % 30 == 0 || i == last);

私があなたの主張を正しく理解すれば。

であり、ではないthinことに注意してください。通常はこれで十分です。ループで列挙し、他のLINQメソッドを使用できます。 しかし、それは怠惰に評価されます。つまり、元の変更があれば、それも変更されます。IEnumerable<int>List<int>
foreach
listthin

List<int>代わりに取得したい場合は、ToList ()呼び出しを追加するだけです。

var last = list.Count - 1;
var thin = list.Where ((item, i) => i % 30 == 0 || i == last)
               .ToList ();

同様に、配列を取得するには、を使用しますToArray ()

これを機能させるために追加することを忘れないでくださいusing System.Linq;。より高度なフィルタリング、集約、およびグループ化については、101LINQサンプル
も参照してください。

于 2012-12-21T21:20:47.983 に答える
0

これを試して:

 var thin = list.Where(a => a % 2 == 0).Union(new List<int> { list.Min(), list.Max() }).OrderBy(a => a);

これにより、最初と最後の値に加えて、中央にいくつかの値が表示されます。

于 2012-12-21T21:31:09.410 に答える