Locating a list of parts
You can construct LINQ queries step by step instead of writing them all at once

parts = Database.Parts;
if (filter == "123") {
    parts = parts.Where(p =&gt; p.Number[0].IsDigit())
} else if (filter != "All") { // Alphabetic filter
    parts = parts.Where(p =&gt; p.Number.StartsWith(filter))
}
int totalParts = parts.Count();
parts = parts
    .OrderBy(p =&gt; p.Number)
    .Skip((page - 1) * pageSize)
    .Take(pageSize);


I followed the DRY software design principle here. DRY = Don't Repeat Yourself. If you repeat the same (or almost the same) code over and over, the code is less maintainable and is more susceptible to mistake. The fact that you have to write more, if you repeat yourself, is rather secondary.