Exemple #1
0
        public bool shuffle(List <Desk> deskList, List <PersonAndDesk> personAndDeskList)
        {
            for (int i = 0; i < deskList.Count; i++)
            {
                if (deskList[i].name == "random")
                {
                    continue;
                }
                var shuffleResult = new ShuffleResult();
                shuffleResult.deskName = deskList[i].name;
                shuffleResult.deskMax  = deskList[i].max;
                shuffleResult.person   = new ObservableCollection <Person>();
                _shuffleResult.Add(shuffleResult);
            }

            foreach (var personAndDesk in personAndDeskList)
            {
                if (personAndDesk.selectDesk != 0)
                {
                    _shuffleResult[personAndDesk.selectDesk - 1].person.Add(
                        new Person
                    {
                        name  = personAndDesk.name,
                        image = personAndDesk.image
                    });
                }
            }

            int n = 0;

            foreach (var personAndDesk in personAndDeskList.OrderBy(_ => Guid.NewGuid()).ToList <PersonAndDesk>())
            {
                if (personAndDesk.selectDesk == 0)
                {
                    if (_shuffleResult[n].person.Count >= _shuffleResult[n].deskMax)
                    {
                        n++;
                        if (n >= _shuffleResult.Count)
                        {
                            var s = new ShuffleResult {
                                deskName = "", deskMax = int.MaxValue, person = new ObservableCollection <Person>()
                            };
                            _shuffleResult.Add(s);
                        }
                    }

                    _shuffleResult[n].person.Add(
                        new Person
                    {
                        name  = personAndDesk.name,
                        image = personAndDesk.image
                    });
                }
            }

            return(true);
        }
        public bool shuffle(List<Desk> deskList, List<PersonAndDesk> personAndDeskList)
        {
            for (int i = 0; i < deskList.Count; i++)
            {
                if (deskList[i].name == "random")
                {
                    continue;
                }
                var shuffleResult = new ShuffleResult();
                shuffleResult.deskName = deskList[i].name;
                shuffleResult.deskMax = deskList[i].max;
                shuffleResult.person = new ObservableCollection<Person>();
                _shuffleResult.Add(shuffleResult);
            }

            foreach (var personAndDesk in personAndDeskList)
            {
                if (personAndDesk.selectDesk != 0)
                {
                    _shuffleResult[personAndDesk.selectDesk - 1].person.Add(
                        new Person
                        {
                            name = personAndDesk.name,
                            image = personAndDesk.image
                        });
                }
            }

            int n = 0;
            foreach (var personAndDesk in personAndDeskList.OrderBy(_ => Guid.NewGuid()).ToList<PersonAndDesk>())
            {
                if (personAndDesk.selectDesk == 0) {
                    if (_shuffleResult[n].person.Count >= _shuffleResult[n].deskMax)
                    {
                        n++;
                        if (n >= _shuffleResult.Count)
                        {
                            var s = new ShuffleResult { deskName = "", deskMax = int.MaxValue, person = new ObservableCollection<Person>() };
                            _shuffleResult.Add(s);
                        }
                    }

                    _shuffleResult[n].person.Add(
                        new Person
                        {
                            name = personAndDesk.name,
                            image = personAndDesk.image
                        });
                }
            }

            return true;
        }