---
title: "How do you list and filter files using LINQ?"  
description: "How do you list and filter files using LINQ?"  
author: "Ravi Vishwakarma"  
published: 2025-05-18  
updated: 2025-05-22  
canonical: https://www.mindstick.com/forum/161634/how-do-you-list-and-filter-files-using-linq  
category: "c#"  
tags: ["c#", "linq"]  
reading_time: 2 minutes  

---

# How do you list and filter files using LINQ?

How do you list and [filter](https://www.mindstick.com/forum/1176/filter-in-a-xml-file-in-c-sharp) [files](https://www.mindstick.com/articles/23302/the-importance-and-advantage-of-keeping-your-important-files-on-the-cloud) using [LINQ](https://www.mindstick.com/articles/12007/language-integrated-query-linq-queries)? with example

## Replies

### Reply by Anubhav Sharma

To **list and filter files using LINQ**, you can combine `System.IO` with LINQ queries to efficiently query file metadata (like name, size, extension, etc.).

## Example: List All Files in a Directory

```cs
using System.IO;
using System.Linq;

string folderPath = @"C:\Uploads";

var files = Directory.GetFiles(folderPath)
    .Select(f => new FileInfo(f))
    .ToList();
```

## Filter Examples Using LINQ

### 1. Filter by Extension

```cs
var pdfFiles = files
    .Where(f => f.Extension.Equals(".pdf", StringComparison.OrdinalIgnoreCase))
    .ToList();
```

### 2. Filter by File Size (e.g., files > 1 MB)

```cs
var largeFiles = files
    .Where(f => f.Length > 1 * 1024 * 1024) // > 1MB
    .ToList();
```

### 3. Filter by Creation Date

```cs
var recentFiles = files
    .Where(f => f.CreationTime >= DateTime.Today.AddDays(-7)) // last 7 days
    .ToList();
```

### 4. Filter by Name Pattern

```cs
var matchingFiles = files
    .Where(f => f.Name.Contains("report", StringComparison.OrdinalIgnoreCase))
    .ToList();
```

### 5. Combine Filters

```cs
var filtered = files
    .Where(f =>
        f.Extension == ".txt" &&
        f.Length < 500_000 &&
        f.CreationTime > DateTime.Today.AddMonths(-1))
    .ToList();
```

## Project to Custom DTO

```cs
var fileList = files.Select(f => new
{
    f.Name,
    f.Extension,
    SizeKB = f.Length / 1024,
    Created = f.CreationTime
}).ToList();
```

## Bonus: Recursive File Listing

```cs
var allFiles = Directory.GetFiles(folderPath, "*.*", SearchOption.AllDirectories)
    .Select(f => new FileInfo(f))
    .ToList();
```


---

Original Source: https://www.mindstick.com/forum/161634/how-do-you-list-and-filter-files-using-linq

Copyright © MindStick Software Pvt. Ltd. This Markdown version is provided for developers, AI systems, and offline reading.
