public async Task <int> CompareTo(File file, FileAttribs option) { switch (option) { case FileAttribs.Name: return(this.Name.CompareTo(file.Name)); case FileAttribs.DateCreated: return(this.DateCreated.CompareTo(file.DateCreated)); case FileAttribs.DateModified: return(this.DateModifyed.CompareTo(file.DateModifyed)); case FileAttribs.Content: if (this.Size < file.Size) { return(-1); } if (this.Size > file.Size) { return(1); } //int i = await CompareFileContent(this, file); return(await CompareFileContent(this, file)); //i; case FileAttribs.Size: return(this.Size.CompareTo(file.Size)); } return(0); }
/// <summary> /// Реализует алгоритм сортировки спика файлов по заданному аттрибуту /// </summary> /// <param name="files"></param> /// <param name="firstindex"></param> /// <param name="lastindex"></param> /// <param name="option"></param> /// <returns></returns> public async Task SortByAttribute(int firstindex, int lastindex, FileAttribs option) { if (firstindex >= lastindex) { return; } int c = await SortPass(firstindex, lastindex, option); await SortByAttribute(firstindex, c - 1, option); await SortByAttribute(c + 1, lastindex, option); }
/// <summary> /// Одиночный проход сортировки /// </summary> /// <param name="files"></param> /// <param name="firstindex"></param> /// <param name="lastindex"></param> /// <param name="compareattrib"></param> /// <returns></returns> private async Task <int> SortPass(int firstindex, int lastindex, FileAttribs compareattrib) { int i = firstindex; for (int j = i; j <= lastindex; j++) { int compareResult = await _files[j].CompareTo(_files[lastindex], compareattrib); if (compareResult <= 0) { File t = _files[i]; _files[i] = _files[j]; _files[j] = t; ++i; } } return(i - 1); }
public GroupingAttribute(string name, FileAttribs attribute, int weight) { Name = name; Attribute = attribute; //Weight = weight; }