Revision: 59941
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at October 11, 2012 01:35 by ed_trench
Initial Code
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace CentreFolderDeduper { class Program { static void Main(string[] args) { String[] centreFolders = Directory.GetDirectories(args[0]); List<Folder> folders = new List<Folder>(); foreach(var centreFolder in centreFolders) { if (centreFolder.IndexOf('-') != -1) { var newFolder = new Folder { ShortName = centreFolder.Left(centreFolder.IndexOf('-')), DateCreated = System.IO.File.GetCreationTime(centreFolder)}; folders.Add(newFolder); } } var duplicateFolders = from f in folders group f by f.ShortName into g where g.Count() > 1 select new { CentreFolderName = g.Key, CentreFolderNameCount = g.Count(), LastDateCreated = g.Max(f => f.DateCreated) }; Console.WriteLine(duplicateFolders.Count()); ObjectDumper.Write(duplicateFolders); Console.ReadKey(); } } } class Folder { public String Directoty { get; set; } public String ShortName { get; set; } public DateTime DateCreated { get; set; } } public static string Left(this string str, int count) { if (string.IsNullOrEmpty(str) || count < 1) return string.Empty; else return str.Substring(0, Math.Min(count, str.Length)); }
Initial URL
Initial Description
Also extended C# LINQ and Extension method (simple) to include the last (MAX) Date Created property, added a new Folder class (model) with properties and included them in a List<Folder>. Also, amended the LINQ statement to get the MAX(Date Created) .
Initial Title
C# LINQ & Extension method continued
Initial Tags
extension
Initial Language
C#