ARKBreedingStats.Form1.filterLib C# (CSharp) Метод

filterLib() приватный Метод

Call this list to set the listview to the current filters
private filterLib ( ) : void
Результат void
        private void filterLib()
        {
            if (filterListAllowed)
            {
                List<Creature> selectedCreatures = new List<Creature>();
                foreach (ListViewItem i in listViewLibrary.SelectedItems)
                    selectedCreatures.Add((Creature)i.Tag);

                var filteredList = from creature in creatureCollection.creatures
                                   select creature;

                // if only one species should be shown
                if (listBoxSpeciesLib.SelectedItem != null && listBoxSpeciesLib.SelectedItem.ToString() != "All")
                    filteredList = filteredList.Where(c => c.species == listBoxSpeciesLib.SelectedItem.ToString());

                // if only certain owner's creatures should be shown
                bool hideWOOwner = (creatureCollection.hiddenOwners.IndexOf("n/a") >= 0);
                filteredList = filteredList.Where(c => !creatureCollection.hiddenOwners.Contains(c.owner) && (!hideWOOwner || c.owner != ""));

                // show also dead creatures?
                if (!checkBoxShowDead.Checked)
                    filteredList = filteredList.Where(c => c.status != CreatureStatus.Dead);

                // show also unavailable creatures?
                if (!checkBoxShowUnavailableCreatures.Checked)
                    filteredList = filteredList.Where(c => c.status != CreatureStatus.Unavailable);

                // show also neutered creatures?
                if (!checkBoxShowNeuteredCreatures.Checked)
                    filteredList = filteredList.Where(c => !c.neutered);

                // display new results
                showCreaturesInListView(filteredList.OrderBy(c => c.name).ToList());

                // update creaturebox
                creatureBoxListView.updateLabel();

                // select previous selecteded again
                int selectedCount = selectedCreatures.Count;
                if (selectedCount > 0)
                {
                    for (int i = 0; i < listViewLibrary.Items.Count; i++)
                    {
                        if (selectedCreatures.Contains((Creature)listViewLibrary.Items[i].Tag))
                        {
                            listViewLibrary.Items[i].Focused = true;
                            listViewLibrary.Items[i].Selected = true;
                            if (--selectedCount == 0)
                            {
                                listViewLibrary.EnsureVisible(i);
                                break;
                            }
                        }
                    }
                }
            }
        }
Form1