2016-05-03 16 views
1

Ich habe ein Verzeichnis mit einer Liste von Dateien dort:Gruppierung Dateien von gemeinsamem Text in Namen Lambda mit

ITEM_jazz_list_20160209.txt 
ITEM_jazz_list_20160209.txt 
ITEM_piano_list_20160209.txt 

Ist es möglich, die Elemente dort nach Typ (Jazz oder Klavier) eine Lambda-Anweisung Gruppe zu schreiben Welches ist ein Teil des Textes? Also ich am Ende mit 2 Gruppen der 3 Dateien oben?

+0

Ja, es ist. Was hast du schon probiert? – yaakov

+0

Nichts leider, ich habe keine diea, wie Sie dies erreichen – Maya

+0

Werfen Sie einen Blick auf [GroupBy] (https://msdn.microsoft.com/en-us/library/bb534304 (v = vs.100) .aspx). Das sollte genug sein, um Sie zu beginnen. – yaakov

Antwort

4

Vielleicht:

var groups = Directory.EnumerateFiles(dir, "*.txt") 
    .Select(path => new { path, fileName = System.IO.Path.GetFileNameWithoutExtension(path)}) 
    .Select(x => new { x.path, x.fileName, tokens = x.fileName.Split('_')}) 
    .Where(x => x.tokens.Length >= 4) 
    .GroupBy(x => x.tokens[1]) 
    .Select(g => g.ToArray()) 
    .ToArray(); 
+0

@codran Tokens enthalten die Teile zwischen "_" Zeichen. –

+0

Erstaunlich, hat den Job, vielen Dank – Maya