Jeden dritten Eintrag einer List<T> auslesen

Written on April 23, 2011

Will man aus einer Liste von strings z.B. jeden dritten Eintrag (in diesem Fall beginnend mit dem ersten) erhalten und aus diesen Eintr├Ągen wieder eine List erstellen, kann man dies mit LinQ leicht erledigen:

public class Given_a_list_of_9_entries_when_requesting_every_third_entry {
    static IList<string> _everyThirdEntry;
    static IList<string> _allEntries;
    static IList<string> _expectedEntries;

    Establish context
        = () =>
            {
                  _allEntries = new List<string>
                              {
                                     "x1","y1","z1","x2","y2","z2","x3","y3","z3"
                              };
                  _expectedEntries = new List<string>
                                      {
                                             "x1","x2","x3"
                                      };
            };

    Because of
        = () =>
            {
                  _everyThirdEntry =
                      _allEntries.Where((entry, index) => index %3 == 0).ToList();
            };

    It should_return_every_third_entry_starting_on_first
        = () => {
                    _everyThirdEntry.ShouldEqual(_expectedEntries);
        };
}

Where besitzt eine ├ťberladung, in der man Zugriff auf den Index des jeweiligen Elements bekommt, der Rest der Funktion sollte somit klar sein Winking smile

DotNetKicks-DE Image