Immer eindeutige Werte aus einer Liste von Objekten mit einer Liste<string> als Eigenschaft
Zur Veranschaulichung habe ich eine einfache Mitarbeiter-Klasse mit mehreren Feldern und eine Methode zum entfernen mehrerer Vorkommnisse in der Certifications
Eigenschaft
public int EmployeeId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
private List<string> certifications = new List<string>();
public List<string> Certifications
{
get { return certifications; }
set { certifications = value; }
}
public List<string> RemoveDuplicates(List<string> s)
{
List<string> dupesRemoved = s.Distinct().ToList();
foreach(string str in dupesRemoved)
Console.WriteLine(str);
return dupesRemoved;
}
Die RemoveDuplicates-Methode arbeiten, entfernen Sie alle doppelten Saiten in den Zertifizierungen Eigenschaft des Employee-Objekt. Überlegen Sie jetzt, wenn ich eine Liste von Employee-Objekten.
Employee e = new Employee();
List<string> stringList = new List<string>();
stringList.Add("first");
stringList.Add("second");
stringList.Add("third");
stringList.Add("first");
e.Certifications = stringList;
//e.Certifications = e.RemoveDuplicates(e.Certifications); works fine
Employee e2 = new Employee();
e2.Certifications.Add("fourth");
e2.Certifications.Add("fifth");
e2.Certifications.Add("fifth");
e2.Certifications.Add("sixth");
List<Employee> empList = new List<Employee>();
empList.Add(e);
empList.Add(e2);
Könnte ich
foreach (Employee emp in empList)
{
emp.Certifications = emp.RemoveDuplicates(emp.Certifications);
}
erhalten Sie eine Liste ALLER eindeutigen Zertifizierungen, die für alle Mitarbeiter in der Liste, aber ich möchte diese in LINQ, so etwas wie
stringList = empList.Select(emp => emp.Certifications.Distinct().ToList());
dieser gibt mir die Fehlermeldung
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<System.Collections.Generic.List<string>>' to 'System.Collections.Generic.List<string>'. An explicit conversion exists (are you missing a cast?)
Wie kann ich eine Liste von einzigartigen Zertifizierungen aus einer Liste von Employee-Objekten?
Dies ist nur zur Veranschaulichung, aber danke für den Hinweis, ich werde die Datei diesen einen Weg in das tool-set.
InformationsquelleAutor wootscootinboogie | 2013-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich verstehe, wollen Sie eine Liste von all den einzigartigen Zertifizierungen unter den Mitarbeitern. Das wäre ein job für SelectMany:
InformationsquelleAutor Joe Enos
Den Sie verwenden möchten SelectMany, die können Sie wählen Sie Teillisten, aber gibt diese in einer reduzierten form:
InformationsquelleAutor RoadieRich
Können Sie versuchen, über die SelectMany-Erweiterung?
InformationsquelleAutor FunksMaName