Get File Names of a Particular File Type using LINQ

This is a simple Trick to find File Names of a particular File Type existing in a Folder.


Suppose, you want to find the File Names of the CSV Files in a folder. So, you need to exclude all other files and consider the CSV Files only. This was implemented in one of my projects, where all the CSV File Names from a folder got populated in a DropDownList.

Let’s Explore

So, the main thing here is to find a particular type of File. For that, I used the following code.

DirectoryInfo di = new DirectoryInfo(folderPath);

// Get only the CSV files.
List csvFiles = di.GetFiles("*.csv")
                  .Where(file => file.Name.EndsWith(".csv"))
                  .Select(file => file.Name).ToList();

Here I have used DirectoryInfo.GetFiles Method (String).

Returns a file list from the current directory matching the given search pattern.

So, di.GetFiles("*.csv") would give us a list of all the CSV Files in that folder.

  • Here *.csv is the SearchPattern and * means any string before .csv.
  • Now, Where Clause is used to make sure that File Extension Ends With .csv and nothing else.

Then we are selecting the File Names by Select clause like Select(file => file.Name).


You can apply this Trick to find any File Type. You just need to change the SearchPattern accordingly. If you wish to find pdf files, then it would be di.GetFiles("*.pdf").

Full Code

I have used another Where condition here as per the requirements to exclude the CSV Files, having _something in their File Names.

/// This function Populates CSV File Names on a DropDownList.
private void PopulateCSVFilesDropDownList()
        string folderPath = GetFolderPath();

        if (!string.IsNullOrEmpty(folderPath))
            if (Directory.Exists(folderPath))
                DirectoryInfo di = new DirectoryInfo(folderPath);

                // Get only the CSV files excluding the ones having
                // "_something" appended to them.
                List csvFiles = di.GetFiles("*.csv")
                                  .Where(file => 
                                                 file.Name.EndsWith(".csv") &&
                                  .Select(file => file.Name).ToList();

                // Bind the DropDown and add one default option at the top.
                ddlCSVFiles.DataSource = csvFiles;
                ddlCSVFiles.Items.Insert(0, new ListItem("Please select a file", "-1"));
                // DropDownList is hided and Error message is displayed.
                ddlCSVFiles.Visible = false;
                lblErrorMessage.Visible = true;
                lblErrorMessage.Text = "Folder Does not Exist.";
    catch (Exception ex)
        // Exception is displayed on a Label.
        lblErrorMessage.Visible = true;
        lblErrorMessage.Text = ex.Message;

/// This function returns the Folder Path from web.config,
/// which contains different type of Files.
/// string: Folder Path
private string GetFolderPath()
    // For Example - D:\Projects\SomeProject\SomeFolder
    return (ConfigurationManager.AppSettings != null &&
            ConfigurationManager.AppSettings["FolderPath"] != null) ?
            ConfigurationManager.AppSettings["FolderPath"].ToString() :


27 Feb 2014 – Added an extra condition in LINQ to check if File Name Ends with .csv only and nothing else.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s