Beispiel #1
0
        static void Main(String[] args)
        {
            try {
                var cmd = new Command();
                cmd.Parse(args);

                //
                //[Note]SortCase.Random ran about 4X faster over
                // 108M entries under the Tripartite conditional
                //
                var source  = new SortData(cmd.SortCase);
                var entries = cmd.Length.HasValue ?
                              source.BuildEntries(cmd.Length.Value) :
                              default;

                var timer = new SortTimer <Int32>();
                timer.Sort(entries, cmd.Print, cmd.Trials, cmd.InsertionLimit);
            }
            catch (ApplicationException ex) {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex) {
                Console.WriteLine(ex);
            }
#if DEBUG
            Console.Write("Press Enter");
            Console.ReadLine();
#endif
        }
Beispiel #2
0
        private void Sorted(DataGridHeader e)
        {
            Console.WriteLine(e.SortFlag);
            Console.WriteLine(e.SortingEnabled);
            Console.WriteLine(e.FieldName);

            if (!e.SortingEnabled)
            {
                return;
            }

            SortingOrder sortMethod;

            if (e.SortFlag == SortingOrder.None || e.SortFlag == SortingOrder.Ascendant)
            {
                sortMethod = SortingOrder.Descendant;
            }
            else
            {
                sortMethod = SortingOrder.Ascendant;
            }

            e.SortFlag = sortMethod;
            List <EmpModel> lst = EmpList.ToList();

            SortData.SortList(ref lst, e.SortFlag, e.FieldName);
            EmpList.Clear();
            EmpList.AddRange(lst, System.Collections.Specialized.NotifyCollectionChangedAction.Reset);
            //EmpList = new ObservableRangeCollection<EmpModel>(lst);

            lst.Clear();
        }
        private void sortDataToolStripMenuItem_Click(object sender, EventArgs e)
        {
            SortData frmSortData = new SortData();

            frmSortData.MdiParent = this;
            frmSortData.Show();
        }
Beispiel #4
0
        public unsafe void SortSubviews(Func <NSView, NSView, NSComparisonResult> comparer)
        {
            if (comparer == null)
            {
                throw new ArgumentNullException(nameof(comparer));
            }

#if NET
            delegate * unmanaged <IntPtr, IntPtr, IntPtr, nint> fptr = &view_compare;
            var func = (IntPtr)fptr;
#else
            var func = Marshal.GetFunctionPointerForDelegate(view_comparer);
#endif
            var context = new SortData()
            {
                Comparer = comparer
            };
            var handle = GCHandle.Alloc(context);
            try {
                SortSubviews(func, GCHandle.ToIntPtr(handle));
                if (context.Exception != null)
                {
                    throw new Exception($"An exception occurred during sorting.", context.Exception);
                }
            } finally {
                handle.Free();
            }
        }
Beispiel #5
0
        static void Main(String[] args)
        {
            try {
                var cmd = new Command();
                cmd.Parse(args);

                var source  = new SortData(cmd.SortCase);
                var entries = cmd.Length.HasValue ?
                              source.BuildEntries(cmd.Length.Value) :
                              default;

                var timer = new SortTimer <Int32>();
                timer.Sort(entries, cmd.Print, cmd.Trials, cmd.InsertionLimit, cmd.Merges);
            }
            catch (ApplicationException ex) {
                Console.WriteLine(ex.Message);
            }
            catch (Exception ex) {
                Console.WriteLine(ex);
            }
#if DEBUG
            Console.Write("Press Enter");
            Console.ReadLine();
#endif
        }
Beispiel #6
0
        /// <summary>
        /// Gets the sort data.
        /// </summary>
        /// <param name="viewModels">The view models.</param>
        /// <param name="sortItems">The sort items.</param>
        /// <returns></returns>
        internal IEnumerable <AppointmentViewModel> GetSortData(
            IEnumerable <AppointmentViewModel> viewModels,
            IEnumerable <SortData> sortItems)
        {
            IEnumerable <AppointmentViewModel> appointmentList = viewModels as AppointmentViewModel[] ?? viewModels.ToArray();

            if (sortItems != null)
            {
                SortData sortData = sortItems.First();
                IOrderedEnumerable <AppointmentViewModel> appointmentViewModels = null;

                switch (sortData.Field)
                {
                case "id":
                    appointmentViewModels = IsSortOrderAscending(sortData.Type) ?
                                            appointmentList.OrderBy(x => x.Id) :
                                            appointmentList.OrderByDescending(x => x.Id);
                    break;

                case "startTime":
                    appointmentViewModels = IsSortOrderAscending(sortData.Type) ?
                                            appointmentList.OrderBy(x => x.StartTime) :
                                            appointmentList.OrderByDescending(x => x.StartTime);
                    break;

                case "status":
                    appointmentViewModels = IsSortOrderAscending(sortData.Type) ?
                                            appointmentList.OrderBy(x => x.Status) :
                                            appointmentList.OrderByDescending(x => x.Status);
                    break;

                case "paymentId":
                    appointmentViewModels = IsSortOrderAscending(sortData.Type) ?
                                            appointmentList.OrderBy(x => x.PaymentId) :
                                            appointmentList.OrderByDescending(x => x.PaymentId);
                    break;

                case "location":
                    appointmentViewModels = IsSortOrderAscending(sortData.Type) ?
                                            appointmentList.OrderBy(x => x.Location) :
                                            appointmentList.OrderByDescending(x => x.Location);
                    break;

                case "description":
                    appointmentViewModels = IsSortOrderAscending(sortData.Type) ?
                                            appointmentList.OrderBy(x => x.Description) :
                                            appointmentList.OrderByDescending(x => x.Description);
                    break;
                }

                if (appointmentViewModels != null)
                {
                    appointmentList = appointmentViewModels.ToList();
                }
            }

            return(appointmentList);
        }
Beispiel #7
0
        static void Main(string[] args)
        {
            Thread t = Thread.CurrentThread;

            Console.WriteLine($"Имя потока: {t.Name}");
            t.Name = "Метод Main";
            Console.WriteLine($"Имя потока: {t.Name}");

            Console.WriteLine($"Запущен ли поток : {t.IsAlive}");
            Console.WriteLine($"Приоретет потока : {t.Priority}");
            Console.WriteLine($"Статус потока : {t.ThreadState}");

            int[]  arr = new int[100];
            Random rnd = new Random();

            for (int i = 0; i < arr.Length; i++)
            {
                arr[i] = rnd.Next(0, arr.Length);
            }
            Console.WriteLine("\nИсходный массив: ");
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write($"{arr[i]} ");
            }

            int n = 5;

            Thread[] sorting = new Thread[n];
            SortData SD      = new SortData();

            SD.x      = n;
            SD.n      = 0;
            SD.sourse = arr;
            for (int i = 0; i < n; i++)
            {
                sorting[i] = new Thread(new ParameterizedThreadStart(Sort));
                sorting[i].Start(SD);
                SD.n += arr.Length / n;
            }

            for (int i = 0; i < n; i++)
            {
                sorting[i].Join();
            }
            Console.WriteLine("\n\nМассив отсортированный с помошью потоков: ");
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write($"{arr[i]} ");
            }
            int[] v = Marge(arr);
            Console.WriteLine("\n\nИтоговый отсортированный массив: ");
            for (int i = 0; i < v.Length; i++)
            {
                Console.Write($"{v[i]} ");
            }
            Console.ReadLine();
        }
Beispiel #8
0
        public void ConvertLoginTimeTest()
        {
            List <User> users = new List <User>();

            users.Add(new User(1, "John", "Doe", "John1", "Employee", "12-01-2015 12:01:34"));

            SortData.ConvertLoginTime(users);

            Assert.Equal("2015-01-12T12:01:34+00:00", users[0].last_login_time);
        }
        public ActionResult FindJSON(string compareUrl)
        {
            DirectoryInfo d = new DirectoryInfo(folderPath);

            foreach (var file in d.GetFiles("*.json"))
            {
                var fileName = Path.GetFileNameWithoutExtension(file.Name);
                if (fileName == compareUrl)
                {
                    JObject        jsonObject  = JObject.Parse(System.IO.File.ReadAllText(file.FullName));
                    string         currency    = jsonObject.SelectTokens("data[0].price").Select(f => f["currency"]).FirstOrDefault().ToString();
                    List <decimal> grandTotal  = jsonObject.SelectTokens("data[*].price").Select(f => Math.Round(Convert.ToDecimal(f["grandTotal"]), 2)).ToList();
                    int            passagers   = jsonObject.SelectTokens("data[0].travelerPricings").Select(f => f.Count()).FirstOrDefault();
                    var            itineraries = jsonObject.SelectTokens("data[*]").Select(t => new { segment = t["itineraries"].Select(z => z["segments"]).ToList() }).ToList();
                    int            count       = 0;
                    flightCollection = new List <FlightData>();
                    foreach (var segments in itineraries)
                    {
                        FlightData flightData = new FlightData();
                        flightData.departureAirport      = segments.segment[0].Select(t => t["departure"]).ToList().Select(g => g["iataCode"]).FirstOrDefault().ToString();
                        flightData.departureDateTime     = segments.segment[0].Select(t => t["departure"]).ToList().Select(g => g["at"]).FirstOrDefault().ToString();
                        flightData.transferNumberArrival = segments.segment[0].Select(t => t["departure"]).ToList().Count - 1;
                        flightData.destinationAirport    = segments.segment[1].Select(t => t["departure"]).ToList().Select(g => g["iataCode"]).FirstOrDefault().ToString();
                        flightData.destinationDateTime   = segments.segment[1].Select(t => t["departure"]).ToList().Select(g => g["at"]).FirstOrDefault().ToString();
                        flightData.transferNumberArrival = segments.segment[1].Select(t => t["departure"]).ToList().Count - 1;
                        flightData.totalCost             = grandTotal[count];
                        flightData.passagers             = passagers;
                        flightData.currency = currency;

                        flightCollection.Add(flightData);
                        count++;
                    }

                    flightCollection = flightCollection.OrderBy(x => x.departureDateTime).ToList();

                    if (flightCollection.Count > 0)
                    {
                        var x = flightCollection.First();
                        sortList = new List <SortData>();
                        foreach (PropertyInfo item in x.GetType().GetProperties())
                        {
                            SortData t = new SortData();
                            t.columnName = item.Name;
                            sortList.Add(t);
                        }
                    }

                    return(PartialView("FlightView", flightCollection.ToPagedList(1, elementsPerPage)));
                }
            }
            return(Json(new { success = false }, JsonRequestBehavior.DenyGet));
        }
Beispiel #10
0
        /// <summary>
        /// Gets the sort data.
        /// </summary>
        /// <param name="viewModels">The view models.</param>
        /// <param name="sortItems">The sort items.</param>Bas
        /// <returns></returns>
        internal IEnumerable <TransactionViewModel> GetSortData(
            IEnumerable <TransactionViewModel> viewModels,
            IEnumerable <SortData> sortItems)
        {
            IEnumerable <TransactionViewModel> transactionsList = viewModels as TransactionViewModel[] ?? viewModels.ToArray();

            if (sortItems != null)
            {
                SortData sortData = sortItems.First();
                transactionViewModels = null;

                switch (sortData.Field)
                {
                case "id":
                    transactionViewModels = IsSortOrderAscending(sortData.Type) ?
                                            transactionsList.OrderBy(x => x.Id) :
                                            transactionsList.OrderByDescending(x => x.Id);
                    break;

                case "transactionDateTime":
                    transactionViewModels = IsSortOrderAscending(sortData.Type) ?
                                            transactionsList.OrderBy(x => x.TransactionDateTime) :
                                            transactionsList.OrderByDescending(x => x.TransactionDateTime);
                    break;

                case "status":
                    transactionViewModels = IsSortOrderAscending(sortData.Type) ?
                                            transactionsList.OrderBy(x => x.Status) :
                                            transactionsList.OrderByDescending(x => x.Status);
                    break;

                case "paymentInformation":
                    transactionViewModels = IsSortOrderAscending(sortData.Type) ?
                                            transactionsList.OrderBy(x => x.MaskedNumber) :
                                            transactionsList.OrderByDescending(x => x.MaskedNumber);
                    break;

                case "amount":
                    transactionViewModels = IsSortOrderAscending(sortData.Type) ?
                                            transactionsList.OrderBy(x => x.Amount) :
                                            transactionsList.OrderByDescending(x => x.Amount);
                    break;
                }

                if (transactionViewModels != null)
                {
                    transactionsList = transactionViewModels.ToList();
                }
            }

            return(transactionsList);
        }
        public SortData12Sequence(IStreamReader reader)
            : base(reader)
        {
            // SORTDATA12 = SortData *ContinueFrt12

            // SortData
            this.SortData = (SortData)BiffRecord.ReadRecord(reader);

            // *ContinueFrt12
            this.ContinueFrt12s = new List <ContinueFrt12>();
            while (BiffRecord.GetNextRecordType(reader) == RecordType.ContinueFrt12)
            {
                this.ContinueFrt12s.Add((ContinueFrt12)BiffRecord.ReadRecord(reader));
            }
        }
Beispiel #12
0
        // Display List of Users on Rich Text box
        private void btnDisplay_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Sort users by User ID?", "Sort Data", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                // Sort data
                users = SortData.SortByUserID(users);
            }

            // Convert "Last Login Time" to ISO 8601
            SortData.ConvertLoginTime(users);

            var list = new BindingList <User>(users);

            dataGridView1.DataSource = list;
            btnExport.Enabled        = true;
        }
        /// <summary>
        /// Gets the sort data.
        /// </summary>
        /// <param name="viewModels">The view models.</param>
        /// <param name="sortItems">The sort items.</param>
        /// <returns></returns>
        internal IEnumerable <InvoiceViewModel> GetSortData(
            IEnumerable <InvoiceViewModel> viewModels,
            IEnumerable <SortData> sortItems)
        {
            IEnumerable <InvoiceViewModel> invoiceList = viewModels as InvoiceViewModel[] ?? viewModels.ToArray();

            if (sortItems != null)
            {
                SortData sortData = sortItems.First();

                IOrderedEnumerable <InvoiceViewModel> invoiceViewModels = null;

                switch (sortData.Field)
                {
                case "id":
                    invoiceViewModels = IsSortOrderAscending(sortData.Type) ?
                                        invoiceList.OrderBy(x => x.Id) :
                                        invoiceList.OrderByDescending(x => x.Id);
                    break;

                case "date":
                    invoiceViewModels = IsSortOrderAscending(sortData.Type) ?
                                        invoiceList.OrderBy(x => x.InvoiceDate) :
                                        invoiceList.OrderByDescending(x => x.InvoiceDate);
                    break;

                /*case "client":
                 *  invoiceViewModels = IsSortOrderAscending(sortData.Type) ?
                 *      invoiceList.OrderBy(x => x.Status) :
                 *      invoiceList.OrderByDescending(x => x.Status);
                 *  break;*/

                case "paymentId":
                    invoiceViewModels = IsSortOrderAscending(sortData.Type) ?
                                        invoiceList.OrderBy(x => x.PaymentId) :
                                        invoiceList.OrderByDescending(x => x.PaymentId);
                    break;
                }

                if (invoiceViewModels != null)
                {
                    invoiceList = invoiceViewModels.ToList();
                }
            }

            return(invoiceList);
        }
Beispiel #14
0
        private void rankImages()
        {
            Debug.Assert(m_sourceImages.Count() > 0);

            m_sortData = new SortData();

#if false
            Array.Sort(m_ranking, compareImages);
#else
            List <ImagePair> tests = new List <ImagePair>();

            // make it so each image is on each side half the time
            bool alternate = false;

            for (int i = 0; i < m_ranking.Count(); ++i)
            {
                if (m_sourceImages[m_ranking[i]].m_hits < 0)
                {
                    continue;
                }

                for (int j = i + 1; j < m_ranking.Count(); ++j)
                {
                    if (m_sourceImages[m_ranking[j]].m_hits < 0)
                    {
                        continue;
                    }

                    tests.Add(alternate ? new ImagePair(j, i) : new ImagePair(i, j));
                    alternate = !alternate;
                }
            }

            m_pairTotal = tests.Count();
            m_thisPair  = 0;

            foreach (var imagePair in Shuffle(tests, new Random()))
            {
                ++m_thisPair;
                compareImages(m_ranking[imagePair.m_left], m_ranking[imagePair.m_right]);
            }

            Array.Sort(m_ranking, sortImageHitsDesc);
#endif

            m_sortData = null;
        }
        public PartialViewResult FilterData(List <FlightData> flightList)
        {
            flightCollection = new List <FlightData>();
            if (flightList != null)
            {
                foreach (var item in flightList)
                {
                    var tempStringDeparture = item.departureDateTime.Split('T');
                    var tempDateDeparture   = tempStringDeparture[0].Split('-');
                    var departureDateTime   = tempDateDeparture[2] + "." + tempDateDeparture[1] + "." + tempDateDeparture[0] + ". " + tempStringDeparture[1];

                    var tempStringDestination = item.destinationDateTime.Split('T');
                    var tempDateDestination   = tempStringDestination[0].Split('-');
                    var destinationDateTime   = tempDateDestination[2] + "." + tempDateDestination[1] + "." + tempDateDestination[0] + ". " + tempStringDestination[1];

                    item.departureDateTime   = departureDateTime;
                    item.destinationDateTime = destinationDateTime;
                    item.totalCost           = Math.Round(item.totalCost, 2);
                    flightCollection.Add(item);
                }
                flightCollection = flightCollection.OrderBy(x => x.departureDateTime).ToList();
            }

            if (flightCollection.Count > 0)
            {
                var x = flightCollection.First();
                sortList = new List <SortData>();
                foreach (PropertyInfo item in x.GetType().GetProperties())
                {
                    SortData t = new SortData();
                    t.columnName = item.Name;
                    sortList.Add(t);
                }
            }

            return(PartialView("FlightView", flightCollection.ToPagedList(1, elementsPerPage)));
        }
Beispiel #16
0
        public List <string> GetSortToReduce()
        {
            try
            {
                int fileId = db.Files.Max(f => f.Id);

                SortData      sub        = db.SortDatas.Find(db.SortDatas.Where(s => s.FileId == fileId).Min(item => item.Id));
                Reduce        map        = db.Reduce.Where(item => item.Id == sub.ReduceId).FirstOrDefault();
                List <string> dataReturn = new List <string> {
                    sub.Data, map.Data, map.Node
                };
                db.SortDatas.Remove(sub);

                db.SaveChanges();
                db.Reduce.Remove(map);

                db.SaveChanges();
                return(dataReturn);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Beispiel #17
0
        public void SortSubviews(Func <NSView, NSView, NSComparisonResult> comparer)
        {
            if (comparer == null)
            {
                throw new ArgumentNullException(nameof(comparer));
            }

            var func    = Marshal.GetFunctionPointerForDelegate(view_comparer);
            var context = new SortData()
            {
                Comparer = comparer
            };
            var handle = GCHandle.Alloc(context);

            try {
                SortSubviews(func, GCHandle.ToIntPtr(handle));
                if (context.Exception != null)
                {
                    throw new Exception($"An exception occurred during sorting.", context.Exception);
                }
            } finally {
                handle.Free();
            }
        }
Beispiel #18
0
        private IOrderedQueryable <Approval> OrderBy(IOrderedQueryable <Approval> dbQuery, SortData sort)
        {
            switch (sort.Value)
            {
            case "Status":
                if (sort.AscDesc.ToUpper() == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.Status.ToString());
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.Status.ToString());
                }
                break;

            case "User":
                if (sort.AscDesc.ToUpper() == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.UserRequisitor.Value.ToString());
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.UserRequisitor.Value.ToString());
                }
                break;

            case "Identifier":
                if (sort.AscDesc.ToUpper() == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.PurchaseRequest.FriendlyIdentifier.ToString());
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.PurchaseRequest.FriendlyIdentifier.ToString());
                }
                break;

            case "DateRequested":
                if (sort.AscDesc.ToUpper() == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.InfoTrack.Date_CreatedOn.ToString());
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.InfoTrack.Date_CreatedOn.ToString());
                }
                break;

            default:
                break;
            }

            return(dbQuery);
        }
Beispiel #19
0
 public PageableQuery <T> OrderByDescending <TOut>(Expression <Func <T, TOut> > propertyExpression)
 {
     _orderByExpression = new SortData <TOut>(propertyExpression, SortType.Descending);
     _theByExpressions.Clear();
     return(this);
 }
Beispiel #20
0
        internal static ShapeNavigator GetNavigator(this PlainShape shape, long maxEdge, NativeArray <IntVector> extraPoints, Allocator allocator)
        {
            SplitLayout splitLayout;

            if (maxEdge == 0)
            {
                splitLayout = shape.Plain(Allocator.Temp);
            }
            else
            {
                splitLayout = shape.Split(maxEdge, Allocator.Temp);
            }

            int pathCount  = splitLayout.nodes.Length;
            int extraCount = extraPoints.Length;

            int n;

            if (extraCount > 0)
            {
                n = pathCount + extraCount;
            }
            else
            {
                n = pathCount;
            }

            var links   = new NativeArray <Link>(n, allocator);
            var natures = new NativeArray <LinkNature>(n, allocator);

            int m = splitLayout.layouts.Length;

            for (int j = 0; j < m; ++j)
            {
                var layout = splitLayout.layouts[j];
                var prev   = layout.end - 1;

                var self = layout.end;
                var next = layout.begin;

                var a = splitLayout.nodes[prev];
                var b = splitLayout.nodes[self];

                var A = a.point.BitPack;
                var B = b.point.BitPack;

                while (next <= layout.end)
                {
                    var c = splitLayout.nodes[next];
                    var C = c.point.BitPack;

                    var  nature = LinkNature.simple;
                    bool isCCW  = IsCCW(a.point, b.point, c.point);

                    if (layout.isClockWise)
                    {
                        if (A > B && B < C)
                        {
                            if (isCCW)
                            {
                                nature = LinkNature.start;
                            }
                            else
                            {
                                nature = LinkNature.split;
                            }
                        }

                        if (A < B && B > C)
                        {
                            if (isCCW)
                            {
                                nature = LinkNature.end;
                            }
                            else
                            {
                                nature = LinkNature.merge;
                            }
                        }
                    }
                    else
                    {
                        if (A > B && B < C)
                        {
                            if (isCCW)
                            {
                                nature = LinkNature.start;
                            }
                            else
                            {
                                nature = LinkNature.split;
                            }
                        }

                        if (A < B && B > C)
                        {
                            if (isCCW)
                            {
                                nature = LinkNature.end;
                            }
                            else
                            {
                                nature = LinkNature.merge;
                            }
                        }
                    }

                    var verNature = b.index < shape.points.Length ? Vertex.Nature.origin : Vertex.Nature.extraPath;

                    links[self]   = new Link(prev, self, next, new Vertex(self, verNature, b.point));
                    natures[self] = nature;

                    a = b;
                    b = c;

                    A = B;
                    B = C;

                    prev = self;
                    self = next;

                    ++next;
                }
            }

            splitLayout.Dispose();

            if (extraCount > 0)
            {
                for (int k = 0; k < extraPoints.Length; ++k)
                {
                    var p = extraPoints[k];
                    var j = k + pathCount;
                    links[j]   = new Link(j, j, j, new Vertex(j, Vertex.Nature.extraInner, p));
                    natures[j] = LinkNature.extra;
                }
            }

            // sort

            var dataList = new NativeArray <SortData>(n, Allocator.Temp);

            for (int j = 0; j < n; ++j)
            {
                var p = links[j].vertex.point;
                dataList[j] = new SortData(j, p.BitPack, (int)natures[j]);
            }

            Sort(dataList);

            var indices = new NativeArray <int>(n, allocator);

            // filter same points
            var x1 = new SortData(-1, long.MinValue, int.MinValue);

            int i = 0;

            while (i < n)
            {
                var x0 = dataList[i];
                indices[i] = x0.index;
                if (x0.factor == x1.factor)
                {
                    var v = links[x1.index].vertex;

                    do
                    {
                        var link = links[x0.index];
                        links[x0.index] = new Link(link.prev, link.self, link.next, new Vertex(v.index, v.nature, v.point));
                        ++i;
                        if (i < n)
                        {
                            x0         = dataList[i];
                            indices[i] = x0.index;
                        }
                        else
                        {
                            break;
                        }
                    } while(x0.factor == x1.factor);
                }
                x1 = x0;
                ++i;
            }

            dataList.Dispose();

            return(new ShapeNavigator(pathCount, extraCount, links, natures, indices));
        }
Beispiel #21
0
        private SqlExpression <Task> OrderBy(SqlExpression <Task> query, SortData sort)
        {
            switch (sort.Value)
            {
            case "Status":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.Status.ToString());
                }
                else
                {
                    query = query.ThenBy(e => e.Status.ToString());
                }
                break;

            case "Created By":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.CreatedBy);
                }
                else
                {
                    query = query.ThenBy(e => e.CreatedBy);
                }
                break;

            case "Assigned To":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.AssignedTo);
                }
                else
                {
                    query = query.ThenBy(e => e.AssignedTo);
                }
                break;

            case "Priority":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.Priority.ToString());
                }
                else
                {
                    query = query.ThenBy(e => e.Priority.ToString());
                }
                break;

            case "Category":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.Category);
                }
                else
                {
                    query = query.ThenBy(e => e.Category);
                }
                break;

            case "Title":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.Title);
                }
                else
                {
                    query = query.ThenBy(e => e.Title);
                }
                break;

            case "Description":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.Description);
                }
                else
                {
                    query = query.ThenBy(e => e.Description);
                }
                break;

            case "Closed By":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.ClosedBy);
                }
                else
                {
                    query = query.ThenBy(e => e.ClosedBy);
                }
                break;

            case "Date Created At":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.CreatedAt);
                }
                else
                {
                    query = query.ThenBy(e => e.CreatedAt);
                }
                break;

            case "Date Due Date":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.DueDate);
                }
                else
                {
                    query = query.ThenBy(e => e.DueDate);
                }
                break;

            case "Date Closed":
                if (sort.AscDesc == "DESC")
                {
                    query = query.ThenByDescending(e => e.ClosedAt);
                }
                else
                {
                    query = query.ThenBy(e => e.ClosedAt);
                }
                break;

            default:
                break;
            }

            return(query);
        }
Beispiel #22
0
        /// <summary>
        /// Constructs the order by clause based on the provided sort data. Sort terms must match items in
        /// the OrderByFieldMappings dictionary.
        /// </summary>
        /// <param name="sortData">Sort data in the format "DTOField1,asc;DTOField2,desc;DTOField3"
        /// Default sort order is asc</param>
        /// <returns>string use in dynamic LinQ in format: "Field1 asc,Field2 desc,Field3 asc"</returns>
        private string TransformOrderByClause(SortData sortData)
        {
            try
            {
                var orderByClause               = new StringBuilder();
                var hasPrimaryKeyValue          = sortData.OrderByFieldMappings.ContainsKey("PrimaryKey");
                var firstOrderByColumnSortOrder = string.Empty;
                var containPrimaryKeyValue      = false;

                // If no sortby field is supplied, use the default.
                if (string.IsNullOrEmpty(sortData.Expression))
                {
                    return(sortData.OrderByFieldMappings["default"] + " asc");
                }

                var sortItems = sortData.Expression.Split(';');

                foreach (var sortItem in sortItems)
                {
                    if (!string.IsNullOrEmpty(sortItem))
                    {
                        var splitedSortItems  = sortItem.Split(',');
                        var orderByColumnName = splitedSortItems[0];

                        if (hasPrimaryKeyValue && string.Compare(sortData.OrderByFieldMappings[orderByColumnName], sortData.OrderByFieldMappings["PrimaryKey"], StringComparison.CurrentCultureIgnoreCase) == 0)
                        {
                            containPrimaryKeyValue = true;
                        }

                        orderByClause.Append(sortData.OrderByFieldMappings[orderByColumnName]);

                        if (splitedSortItems.Length == 2)
                        {
                            var sortOrder = splitedSortItems[1].Equals("desc") ? " desc," : " asc,";
                            orderByClause.Append(sortOrder);
                            if (string.IsNullOrEmpty(firstOrderByColumnSortOrder))
                            {
                                firstOrderByColumnSortOrder = sortOrder;
                            }
                        }
                        else
                        {
                            orderByClause.Append(" asc,");  // Default sort order is asc
                        }
                    }
                }

                if (hasPrimaryKeyValue && !containPrimaryKeyValue)
                {
                    orderByClause.Append(sortData.OrderByFieldMappings["PrimaryKey"]);
                    orderByClause.Append(!string.IsNullOrEmpty(firstOrderByColumnSortOrder)
                        ? firstOrderByColumnSortOrder
                        : " asc,");
                }

                return(orderByClause.ToString().TrimEnd(','));
            }
            catch (Exception)
            {
                throw new AppException("Invalid sort parameters: {0}", sortData.Expression);
            }
        }
Beispiel #23
0
 public void WhenIWantToSortThemInAscendingOrder()
 {
     _array = SortData.SortArrayAscending(_array);
 }
Beispiel #24
0
        private IOrderedQueryable <Task> OrderBy(IOrderedQueryable <Task> dbQuery, SortData sort)
        {
            switch (sort.Value)
            {
            case "Status":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.Status.ToString());
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.Status.ToString());
                }
                break;

            case "Created By":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.UserCreatedBy.Value);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.UserCreatedBy.Value);
                }
                break;

            case "Assigned To":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.UserAssignedTo.Value);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.UserAssignedTo.Value);
                }
                break;

            case "Priority":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.Priority.ToString());
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.Priority.ToString());
                }
                break;

            case "Category":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.Category);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.Category);
                }
                break;

            case "Title":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.Title);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.Title);
                }
                break;

            case "Description":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.Description);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.Description);
                }
                break;

            case "Completed By":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.UserCompletedBy.Value);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.UserCompletedBy.Value);
                }
                break;

            case "Date Created At":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.DateCreatedAt);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.DateCreatedAt);
                }
                break;

            case "Date Due Date":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.DateDue);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.DateDue);
                }
                break;

            case "Date Closed":
                if (sort.AscDesc == "DESC")
                {
                    dbQuery = dbQuery.ThenByDescending(e => e.DateClosed);
                }
                else
                {
                    dbQuery = dbQuery.ThenBy(e => e.DateClosed);
                }
                break;

            default:
                break;
            }

            return(dbQuery);
        }