ich auf ein Problem gestoßen in meiner Arbeit vor kurzem entfernen, die folgende ist der Quellcode,LINQ IEnumerable zu handhaben und unmatch Elemente aus Untereinheit
this.NameList = new ObservableCollection<Name>();
List<Others> others1 = new List<Others>();
others1.Add(new Others() { Company = "Company1", School = "School1" });
others1.Add(new Others() { Company = "Company1", School = "School1" });
others1.Add(new Others() { Company = "Company1", School = "School1" });
List<Others> others2 = new List<Others>();
others2.Add(new Others() { Company = "Company2", School = "School2" });
others2.Add(new Others() { Company = "Company2", School = "School2" });
others2.Add(new Others() { Company = "Company2", School = "School2" });
List<Others> others3 = new List<Others>();
others3.Add(new Others() { Company = "Company3", School = "School3" });
others3.Add(new Others() { Company = "Company3", School = "School3" });
others3.Add(new Others() { Company = "Company3", School = "School3" });
this.NameList.Add(new Name() { FirstName = "Jacob", LastName = "Deng", Others = others1 });
this.NameList.Add(new Name() { FirstName = "David", LastName = "Xu", Others = others2 });
this.NameList.Add(new Name() { FirstName = "Helen", LastName = "Liu", Others = others3 });
please click here to see the output of above code
Und dann lesen Sie bitte den folgenden Code ein,
List<Others> others1 = new List<Others>();
others1.Add(new Others() { Company = "Company1", School = "School1" });
others1.Add(new Others() { Company = "Company1", School = "School1" });
others1.Add(new Others() { Company = "Company1", School = "School1" });
List<Others> others2 = new List<Others>();
List<Others> others3 = new List<Others>();
this.NameList.Add(new Name() { FirstName = "Jacob", LastName = "Deng", Others = others1 });
this.NameList.Add(new Name() { FirstName = "David", LastName = "Xu", Others = others2 });
this.NameList.Add(new Name() { FirstName = "Helen", LastName = "Liu", Others = others3 });
Please click here for the output of the second snippet code
Von den obigen zwei Snippets können Sie bemerken, dass das zweite Snippet keine Einträge in other2 und other3 enthält. Dies können Sie leicht anhand der Vorschauausgabe nachvollziehen.
Jetzt kommt die Frage, wie verwenden wir LINQ zu IEnumerable, um solchen Fall zu behandeln, wie LINQ zu verwenden, um diese Elemente von Entität Others zu entfernen? aber wir müssen behalten, dass other2 und other3 nicht null sind (behalte, dass count 0 ist). Gibt es neben LINQ noch andere Lösungen?
Ich habe versucht, die folgenden zu verwenden, scheiterte aber,
var others = ((MyVM)DataContext).NameList.Select(n => n.Others.Where(o => o.School == "School1")).ToList();
ich einige Test nur haben, wenn wir nicht LINQ verwenden, dann können wir das folgende Snippet-Code verwenden, um meine es zu beheben.
Aber es sieht sehr redundant aus, und wir wissen, dass LINQ sehr nützlich ist und ich glaubte, dass es mit LINQ behoben werden kann. Hoffe, jemand könnte mir helfen, es mit LINQ zu beheben, danke.
Schätzen Sie, wenn mir jemand helfen könnte. Danke vielmals.
Versuchen Sie diese: var andere = ((myvm) Datacontext) .NameList.Select (n => n.Others.Select (o => (o.Schule == "Schule1")? o: "Code hier hinzufügen, um etwas anderes zu tun")). ToList(); – jdweng
Dank Jdweng, ich möchte nur die Elemente entfernen, die Schule ist nicht gleich 'School1' mit LINQ, und die Ausgabe ist das gleiche wie der zweite Code-Schnipsel wie oben erwähnt. Kannst du mir helfen? – Jacob
Es bedeutet, wenn o.School! = 'School1', dann entfernen Sie den Artikel von anderen Entität – Jacob