Yes, you can perform an IMAP search before downloading:
https://www.limilabs.com/blog/how-to-search-imap-in-net
var uids = await imap.SearchAsync(
Expression.And(
Expression.Before(beforeDateTime),
Expression.Since(sinceIncludedDateTime)));
Use Expression class exposes has all search conditions you can use:
Expression.Before
Creates criterion to find messages whose internal date (disregarding time and timezone), assigned by an IMAP server, is earlier than the specified date.
Expression.Since
Creates criterion to find emails whose internal date (disregarding time and timezone), assigned by an IMAP server, is within or later than the specified date.
Expression.SentBefore
Creates criterion to find messages whose "Date:" header (disregarding time and timezone) is earlier than the specified date.
Expression.SentSince
Creates criterion to find emails whose "Date:" header (disregarding time and timezone) is within or later than the specified date.