Linq: wählen Sie, wo in der Liste<string>
Struggeling mit einigen LinqToExcel Filterung hier...
Ive bekam ein List<string> columnsToFilter
enthält 9 Saiten, und mit diesem möchte ich die Daten herausgefiltert, die für bestimmte Spalten in einer List<Row>
, wo Row
enthält die Eigenschaften
IEnumerable<string> ColumnNames
Cell this[string columnName]
Also: List<Row>
hat, sagen wir 30 Zeilen mit jeweils 12 ColumnNames. Ich möchte nun filtern, dass List<Row>
mit List<string> columnsToFilter
so dass ich am Ende mit einem List<Row>
von 30 Zeilen und 9 ColumnNames.
Kann ich die Daten auswählen, die für eine Spalte von quering der columnname:
var result = content.Select(m => m["Column1"]).ToList();
Nun möchte ich zum filtern der Daten basierend auf einem Liste von strings List<string> columnsToFilter
. Was ist der beste Weg, das zu erreichen?
- Irgendwie nicht sicher, was Sie Fragen. Sie Fragen sich, wie Sie 'filter', aber dann verwenden Sie "filter", wenn du redest
Select
, was im Allgemeinen als eine 'Projektion', aber nicht 'filter'. 'Filter' sind in der Regel Funktionen wieWhere
oderCount
,First
,Single
zu tun filtern. - youre Recht, ich meinte damit wählen Sie, ive aktualisiert die Frage. ich kann die Daten auswählen, die für eine Spalte mit einem string, aber ich möchte die Daten auswählen, die für mehrere Spalten mit einer Liste von strings
- von hier aus stackoverflow.com/questions/6772267/... es sieht aus wie Sie können einfach verwenden ||
- ja, aber dann müssen Sie wissen, wie viele Elemente in der Liste<string>', und, kann ebenfalls variieren...
- Ich denke, was Sie versuchen zu sagen ist, dass Sie bauen wollen, eine dynamische select-Anweisung basierend auf dem Inhalt einer Liste. Ich würde check out diese Frage: stackoverflow.com/questions/606104/... für einen Hinweis, wie dies zu tun.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es das, was du suchst?
Definieren ein Objekt namens MyObject hat die Eigenschaft die Namen entsprechend der 9 Spalten, die Sie auswählen möchten.
Bingo. Sie können nun Durchlaufen die 30 Objekte mit 9 Spalten als Eigenschaften.
Denken Sie daran, dass LinqToExcel gerne füllen Objekte, auch wenn Sie nicht alle Spalten dargestellt.
Könnte man auch über eine Eigenschaft oder eine Methode als Teil des MyObject-genannt "Zeile" das wäre ein Wörterbuch () - Objekt, so könnte man sagen myObject.row["Spaltenname"], um auf einen Wert, wenn Sie bevorzugt, dass die syntax einfach zu sagen: myObject.ColumnName, um den Wert. Ich persönlich würde lieber Angebot mit den tatsächlichen Eigenschaften, als um das Wörterbuch Faltung.
excel.GetColumnNames("sheettitle")
ist von keinerlei nutzen für mich (macht meist F10, F12 usw als columnnames). Also, wenn es einen Weg gibt, um die Karte myObject.Zeile zu einer Spalte index oder etwas, das wäre toll.Landete ich dabei in zwei Schritten:
Nun habe ich die Daten brauche ich, aber mit den Zeilen und Spalten vertauscht, so musste ich vertauschen Zeilen Spalten und Umgekehrt: