Ich brauche Berücksichtigung Elemente in einer einzigen Liste entfernenElemente in einer Liste entfernen dupliziert Subelemente
public class Person
{
public int id { get; set; }
public string name { get; set; }
public List<IdentificationDocument> documents { get; set; }
public Person()
{
documents = new List<IdentificationDocument>();
}
}
public class IdentificationDocument
{
public string number { get; set; }
}
Code:
var person1 = new Person() {id = 1, name = "Bob" };
var person2 = new Person() {id = 2, name = "Ted" };
var person3 = new Person() {id = 3, name = "Will_1" };
var person4 = new Person() {id = 4, name = "Will_2" };
person1.documents.Add(new IdentificationDocument() { number = "123" });
person2.documents.Add(new IdentificationDocument() { number = "456" });
person3.documents.Add(new IdentificationDocument() { number = "789" });
person4.documents.Add(new IdentificationDocument() { number = "789" }); //duplicate
var personList1 = new List<Person>();
personList1.Add(person1);
personList1.Add(person2);
personList1.Add(person3);
personList1.Add(person4);
//more data for performance test
for (int i = 0; i < 20000; i++)
{
var personx = new Person() { id = i, name = Guid.NewGuid().ToString() };
personx.documents.Add(new IdentificationDocument() { number = Guid.NewGuid().ToString() });
personx.documents.Add(new IdentificationDocument() { number = Guid.NewGuid().ToString() });
personList1.Add(personx);
}
var result = //Here comes the linq query
result.ForEach(r => Console.WriteLine(r.id + " " +r.name));
Erwartetes Ergebnis:
1 Bob 2 Ted 3 Will_1
Beispiel
https://dotnetfiddle.net/LbPLcP
Vielen Dank!
Spielt es eine Rolle, welche entfernt wird? Sie sagten, Sie erwarten, dass Person 4 entfernt wird, aber was sind die Kriterien? Ist es nur die Reihenfolge der Platzierung in der Liste, früher hat Priorität? Was passiert, wenn Sie eine fünfte Person hinzufügen und sie zwei Identitätsdokumente haben, die mit zwei anderen in der Liste übereinstimmen (sagen wir, sie hatten 123 und 456 als ihre Dokumente). Möchten Sie die Person mit 2 Dokumenten behalten und die anderen beiden Personen entfernen? – pstrjds
Mögliches Duplikat von [LINQs Distinct() für eine bestimmte Eigenschaft] (https://stackoverflow.com/questions/489258/linqs-distinct-on-a-particular-property) –