Benutzer mit den meisten Antworten
Doppelte einträge mit Linq selektieren.

Frage
-
Hallo!
Ich möchte Dateien ermitteln, die die selbe Größe haben.
Ich habe eine List die mit eigenen Objekten gefüllt ist. Nun möchte ich das ganze mit Linq abfragen und bin noch recht neu was das angeht.
Die Objekte haben die eigenschafften Path und Size.
So frage ich die List ab:
var Query = (from entry in source group entry by entry.FileSize into g where g.Count() > 1 select g.Key);
Leider bekomme ich durch g.key halt nur die größen zurück, die mehrfach vorhanden sind, nicht die Dateinamen. Hat jemand nen Tipp für mich wie ich die Abfrage gestallten kann, damit ich nicht nochmal mit einer neuen Abfrage die Dateinamen ermitteln muss?
Vielen Dank schonmal.
Grüße
Antworten
-
Du kannst im "select"-Ausdruck ein neues Objekt erstellen:
var query = from entry in source
group entry by entry.FileSize into g
where g.Count() > 1
select new {
size = g.Key,
names = from item in g select item.Path
};
dann halt darüber iterieren:
foreach (var myGroup in query) {
Console.WriteLine("Gruppe mit der Größe {0} enthält die folgenden Elemente:", myGroup.size);
foreach (var name in myGroup.names) {
Console.WriteLine(name);
}
Console.WriteLine();
}
MVP Data Platform Development My blog
- Als Antwort markiert timetwister2k Samstag, 1. September 2012 11:22
Alle Antworten
-
Hallo,
Google ist dein Freund. Schau mal hier: alle mit der Fragestellung oder eine Ähnlichen wie deine.
http://www.hosca.com/blog/post/2010/04/13/using-LINQ-to-detect-and-remove-duplicate-files.aspx
http://msdn.microsoft.com/de-de/library/bb546133.aspx
Hier allgemein zu Linq und Dateien:http://msdn.microsoft.com/en-us/library/bb397911.aspx
Grüße Alexander
-
Du kannst im "select"-Ausdruck ein neues Objekt erstellen:
var query = from entry in source
group entry by entry.FileSize into g
where g.Count() > 1
select new {
size = g.Key,
names = from item in g select item.Path
};
dann halt darüber iterieren:
foreach (var myGroup in query) {
Console.WriteLine("Gruppe mit der Größe {0} enthält die folgenden Elemente:", myGroup.size);
foreach (var name in myGroup.names) {
Console.WriteLine(name);
}
Console.WriteLine();
}
MVP Data Platform Development My blog
- Als Antwort markiert timetwister2k Samstag, 1. September 2012 11:22