Immer gerade/ungerade Teil einer Sequenz mit LINQ

Sagen, dass ich eine Liste aller Projects, und dass ich diese Gruppe von Category wie diese:

var projectsByCat = from p in Projects
                    group p by p.Category into g
                    orderby g.Count() descending
                    select new { Category = g.Key, Projects = g };

Nun will ich anzeigen dies als eine Liste in einer web-Seite, wo ich zuerst erstellen Sie die linke Seite div, zweitens der rechten Seite div. Ich bestelle durch die Anzahl der Projects in jedem Category zu zeigen, die Categories mit den meisten Projects auf der Oberseite - damit möchte ich split projectsByCat in zwei - wenn ich alle "ungeraden" Categories auf der linken Seite und die "geraden" Kategorien auf der rechten Seite, ich denke, dass ich eine halbwegs vernünftige Ansicht.

So, ich dachte, ich könnte dies tun, um die ungerade und sogar Mitglieder projectsByCat:

var oddCategories = projectsByCat.Where((cat, index) => index % 2 != 0);

var evenCategories = projectsByCat.Where((cat, index) => index % 2 == 0);

Und es kompiliert - aber, wenn ich es laufen lasse, bekomme ich eine Ausnahme wie diese:

Nicht unterstützte überlast für query-operator 'Wo'.

Und ich dachte, ich war sicher, da es kompiliert in den ersten Platz.. 😉

Gibt es einen eleganten Weg, dies zu tun? Und außerdem ist es eine elegante Erklärung dafür, warum meine kreative Nutzung von Where() funktioniert nicht?

Vielen Dank im Voraus!

InformationsquelleAutor Rune Jacobsen | 2008-11-05

Schreibe einen Kommentar