public ConditionalSelectData(ConditionalSelectParameters.FileNameParameters filedata, ConditionalSelectParameters.FileSizeParameters sizedata, ConditionalSelectParameters.DateParameters createddata, ConditionalSelectParameters.DateParameters modifieddata, ConditionalSelectParameters.DateParameters accessedata, bool usefilename, bool usefilesize, bool usecreated, bool usemodified, bool useaccessed)
 {
     this.FileNameData = filedata;
     this.FileSizeData = sizedata;
     this.DateCreatedData = createddata;
     this.DateModifiedData = modifieddata;
     this.DateAccessedData = accessedata;
     this.FilterByDateAccessed = useaccessed;
     this.FilterByDateCreated = usecreated;
     this.FilterByDateModified = usemodified;
     this.FilterByFileName = usefilename;
     this.FilterByFileSize = usefilesize;
 }
        public ShellObjectCollection FilterByAccessDate(ShellObjectCollection shells, DateTime datetocompare, ConditionalSelectParameters.DateFilterTypes filter)
        {
            ShellObjectCollection outshells = new ShellObjectCollection();

            foreach (ShellObject item in shells)
            {
                FileInfo data = new FileInfo(item.ParsingName);
                switch (filter)
                {
                    case ConditionalSelectParameters.DateFilterTypes.EarlierThan:
                        if (DateTime.Compare(data.LastAccessTimeUtc.Date, datetocompare) < 0)
                            outshells.Add(item);
                        break;
                    case ConditionalSelectParameters.DateFilterTypes.LaterThan:
                        if (DateTime.Compare(data.LastAccessTimeUtc.Date, datetocompare) > 0)
                            outshells.Add(item);
                        break;
                    case ConditionalSelectParameters.DateFilterTypes.Equals:
                        if (DateTime.Compare(data.LastAccessTimeUtc.Date, datetocompare) == 0)
                            outshells.Add(item);
                        break;
                    default:
                        break;
                }
            }

            return outshells;
        }
		private List<BExplorer.Shell._Plugin_Interfaces.IListItemEx> DateFilter(List<BExplorer.Shell._Plugin_Interfaces.IListItemEx> shells, ConditionalSelectParameters.DateParameters filter, Func<FileInfo, DateTime> GetDate) {
			var outshells = new List<BExplorer.Shell._Plugin_Interfaces.IListItemEx>();

			foreach (var item in shells) {
				var Date = GetDate(new FileInfo(item.ParsingName));

				switch (filter.filter) {
					case ConditionalSelectParameters.DateFilterTypes.EarlierThan:
						if (DateTime.Compare(Date, filter.queryDate) < 0) outshells.Add(item);
						break;

					case ConditionalSelectParameters.DateFilterTypes.LaterThan:
						if (DateTime.Compare(Date, filter.queryDate) > 0) outshells.Add(item);
						break;

					case ConditionalSelectParameters.DateFilterTypes.Equals:
						if (DateTime.Compare(Date, filter.queryDate) == 0) outshells.Add(item);
						break;

					default:
						break;
				}
			}

			return outshells;
		}