/// <summary>
        /// Get a subset of this species fact list by quality
        /// </summary>
        /// <param name="quality">The quality for the requested species facts.</param>
        /// <returns>A species fact list</returns>
        public SpeciesFactList GetSpeciesFactsByQuality(SpeciesFactQuality quality)
        {
            SpeciesFactList speciesFacts = new SpeciesFactList();
            var             subset       = from SpeciesFact speciesFact in this
                                           where speciesFact.Quality == quality
                                           select speciesFact;

            speciesFacts.AddRange(subset.ToArray());
            return(speciesFacts);
        }
        /// <summary>
        /// Get a subset of this species fact list based on parameters
        /// </summary>
        /// <param name="period">The period for the requested species facts.</param>
        /// <returns>A species fact list</returns>
        public SpeciesFactList GetSpeciesFactsByParameters(Period period)
        {
            SpeciesFactList speciesFacts = new SpeciesFactList();
            var             subset       = from SpeciesFact speciesFact in this
                                           where speciesFact.Period == period
                                           select speciesFact;

            speciesFacts.AddRange(subset.ToArray());
            return(speciesFacts);
        }
        /// <summary>
        /// Get a subset of this species fact list based on parameters
        /// </summary>
        /// <param name="individualCategory">The individual category for the requested species facts.</param>
        /// <returns>A species fact list</returns>
        public SpeciesFactList GetSpeciesFactsByParameters(IndividualCategory individualCategory)
        {
            SpeciesFactList speciesFacts = new SpeciesFactList();
            var             subset       = from SpeciesFact speciesFact in this
                                           where speciesFact.IndividualCategory.Id == individualCategory.Id
                                           select speciesFact;

            speciesFacts.AddRange(subset.ToArray());
            return(speciesFacts);
        }
        /// <summary>
        /// Get a subset of this species fact list based on parameters
        /// </summary>
        /// <param name="factor">The factor for the requested species facts.</param>
        /// <returns>A species fact list</returns>
        public SpeciesFactList GetSpeciesFactsByParameters(Factor factor)
        {
            SpeciesFactList speciesFacts = new SpeciesFactList();
            var             subset       = from SpeciesFact speciesFact in this
                                           where speciesFact.Factor.Id == factor.Id
                                           orderby speciesFact.Taxon.SortOrder ascending
                                           select speciesFact;

            speciesFacts.AddRange(subset.ToArray());
            return(speciesFacts);
        }
        /// <summary>
        /// Get a subset of this species fact list based on parameters
        /// </summary>
        /// <param name="taxon">The taxon for the requested species facts.</param>
        /// <returns>A species fact list</returns>
        public SpeciesFactList GetSpeciesFactsByParameters(Taxon taxon)
        {
            SpeciesFactList speciesFacts = new SpeciesFactList();
            var             subset       = from SpeciesFact speciesFact in this
                                           where speciesFact.Taxon.Id == taxon.Id
                                           //where speciesFact.Taxon == taxon //denna kod fungera lika bra som rad ovan
                                           orderby speciesFact.Factor.SortOrder ascending
                                           select speciesFact;

            speciesFacts.AddRange(subset.ToArray());
            return(speciesFacts);
        }
        /// <summary>
        /// Get a subset of this species fact list based on parameters
        /// </summary>
        /// <param name="taxon">The taxon for the requested species facts.</param>
        /// <param name="individualCategory">The individidual category for the requested species facts.</param>
        /// <param name="factor">The factor for the requested species facts.</param>
        /// <param name="period">The period for the requested species facts.</param>
        /// <returns></returns>
        public SpeciesFactList GetSpeciesFactsByParameters(
            Taxon taxon,
            IndividualCategory individualCategory,
            Factor factor,
            Period period)
        {
            SpeciesFactList speciesFacts = new SpeciesFactList();
            var             subset       = from SpeciesFact speciesFact in this
                                           where speciesFact.Taxon.Id == taxon.Id &&
                                           speciesFact.IndividualCategory.Id == individualCategory.Id &&
                                           speciesFact.Factor.Id == factor.Id &&
                                           ((speciesFact.Period == period) || (speciesFact.Period == null))
                                           select speciesFact;

            speciesFacts.AddRange(subset.ToArray());
            return(speciesFacts);
        }