Ich habe eine list<message>
, die Eigenschaften des Typs Guid
und DateTime
(sowie andere Eigenschaften) enthält. Ich möchte alle Elemente in dieser Liste loswerden, wo die Guid
und DateTime
die gleichen sind (außer einem). Es wird Zeiten geben, wenn diese beiden Eigenschaften sind die gleichen wie andere Elemente in der Liste, aber die anderen Eigenschaften werden anders sein, so kann ich einfach nicht .Distinct()
Wählen Sie distinct durch zwei Eigenschaften in einer Liste
List<Message> messages = GetList();
//The list now contains many objects, it is ordered by the DateTime property
messages = from p in messages.Distinct( what goes here?);
verwenden Dies ist, was ich jetzt haben, aber es scheint, wie es solle einen besseren Weg
List<Message> messages = GetList();
for(int i = 0; i < messages.Count() - 1) //use Messages.Count() -1 because the last one has nothing after it to compare to
{
if(messages[i].id == messages[i+1}.id && messages[i].date == message[i+1].date)
{
messages.RemoveAt(i+1);
{
else
{
i++
}
}
http://stackoverflow.com/questions/489258/linq-distinct-on-a-particular-property – Shyju
Dank. Ich weiß nicht, warum ich das nicht gefunden habe, als ich gesucht habe. – user1304444
Ich bin froh, dass Jons Antwort für dich funktioniert hat. Nur eine Anmerkung der Vorsicht: Ihre "aktuell verwendete Methode" kompiliert nicht, und (nach der Behebung der Kompilierungsfehler) wird es nicht in allen Fällen funktionieren - abhängig von der Reihenfolge Ihrer Elemente würden Sie anders werden ** (falsch) ** Ergebnisse (schließlich vergleichen Sie nur benachbarte Elemente miteinander). – Adam