Ich habe zwei Sammlungen. Erstens ist ein komplexer Typ, der zwei String-Eigenschaften enthältUnterschied von einer Sammlung aus einer anderen Sammlung mit Linq
chpt_cd und appl_src_cd
public class ChapterCodeValidationOutput
{
public string chpt_cd { get; set; }
public string appl_src_cd { get; set; }
}
Und es ist in einer Variablen _validChapterCodeLst gespeichert bekommen.
Es ist Beispieldaten aussehen kann:
chpt_cd aapl_src_cd
------- -----------
07038 C062
06206 C191
Der Eingang zu dem Verfahren, das die Sammlung erzeugt eine Auflistung von Zeichenfolgen ist.
List<string> _chapterCodes
, die Daten wie enthalten:
'070038'
möchte ich den Unterschied zwischen den beiden Sammlung zu finden und sie in zwei separaten Listen entsprechend setzen.
Je nachdem, was dort in dem _validChapterCodeLst ist sollte die gültige Ausgabeliste sein und es soll zwei Spalten ebenfalls
chpt_cd und die damit verbundenen appl_src_cd und die ungültige Liste soll den Unterschied zwischen _validChapterCodeLst und enthalten hat _chapterCodes Eingabeliste. Und sollte auch zwei Spalten enthalten.
Ich versuchte
gmvo._invalidChapterCodes = gmvi._chapterCodes.Except(_validChapterCodeLst.ConvertAll(x => x.chpt_cd.ToString())).ToList();
Ich versuchte _validChapterCodeLst zu konvertieren zuerst zur Liste und führen Sie dann Außer.
Aber das hat nicht funktioniert.
Auch ich weiß nicht, wie man die zugehörige appl_src_cd bekommt.
Ausgabe sollte
06206 C191
Für O (1) Suche Hashset ist immer viel besser als einfache Liste, O (n), guter Code –
@ stop-cran Ok, aber neue HashSet (_validChapterCodeLst) wirft Ausnahme, wie soll man eine Sammlung von komplexen Objekttyp auf die Sammlung von Zeichenfolge zu werfen? –
StrugglingCoder
@StrugglingCoder, richtig. Bearbeitete Namen in der Antwort. –