Оптимизация кода - C# (183223)
Формулировка задачи:
Здравствуйте. Имею такую задачу: проходиться по коллекции файлов, и проводить фильтр по определённым условиям. Причём условия формируются непосредственно перед проходом по всем файлам.
Выглядит сейчас это примерно так:
max_size,min_size,filenameYES,filenameNO и другие условия определяются ДО прохода по всем файлам. Для того чтобы ускорить выполнение кода, мне как-то нужно вывести проход по всем файлам в отдельный метод, и вызывать этот метод уже только с теми условиями, которые определены. То есть чтобы в каждом файле программа не думала какие условия заданы, а сразу проверяла только заданные условия. Просьба подсказать как сие осуществить
foreach (string f in FileList.MainList)
{
// max размер подходит?
if (max_size != 0)
continue ;
// min размер подходит?
if (min_size != 0)
continue ;
// Имя файла
if (filenameYES!=null || filenameNO!=null)
continue;
// Имя папки
if (pathnameYES != null || pathnameNO != null)
continue;
}Решение задачи: «Оптимизация кода»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleApplication13
{
public enum Condition
{
Condition1,
Condition2,
}
public class SourceClass
{
public int Id { get; set; }
public string Field1 { get; set; }
public DateTime Field2 { get; set; }
}
class Program
{
static void Main(string[] args)
{
var source = new List<SourceClass>();
var condition = Condition.Condition1;
Func<SourceClass, bool> predicate = x => false;
if (condition == Condition.Condition1) predicate = x => x.Id > 0 && !string.IsNullOrEmpty(x.Field1);
if (condition == Condition.Condition2) predicate = x => x.Field2 > DateTime.Now.AddDays(-3);
var filteredSource = source.Where(predicate);
}
}
}