What is the best way extract the common file path from the list of file path strings in c#?
Eg:
I have a list 5 file paths in List variable, like below
c:\abc\pqr\tmp\sample\b.txt
c:\abc\pqr\tmp\new2\c1.txt
c:\abc\pqr\tmp\b2.txt
c:\abc\pqr\tmp\b3.txt
c:\abc\pqr\tmp\tmp2\b2.txt
output should be c:\abc\pqr\tmp
Because everything is best solved with LINQ*:
*not everything is best solved with LINQ.
Explanation:
The first line gets a list of lengths of possible matches to evaluate. We want the longest possibility first (so i reverse the enumeration which would be 0, 1, 2, 3; turning it into 3, 2, 1, 0).
I then get the string to match, which is simply a substring of the first entry of the given length.
I then filter the results, to ensure we only include possible matches that all files start with.
Finally, i return the first result, which will be the longest substring and call path.getdirectoryname to ensure if something has a few identical letters in the filenames it isn’t included.