Example #1
0
        /// <summary>
        /// Метод-предикат (булевый) текущей записи коллекции сущностей, который возвращает true или
        /// false в зависимости от попадания в диапазон фильтра по всем полям фильтрации.
        /// </summary>
        private bool MapFilterPredicate(object rawEntity)
        {
            var material = (Material)rawEntity;

            if (_filterCriterias.IsEmpty)
            {
                return(true);
            }
            var result = true;

            // Проверка наличия полей сущности в критериях фильтрации и содержит ли поле искомое значение фильтра
            // Если в фильтре нет поля сущности, поле считается совпадающим по критерию
            string buffer;
            var    filter = _filterCriterias;

            result &= !filter.GetValue("CodeMaterial", out buffer) || FilterCriterias.ContainsLong(material.CodeMaterial, buffer);
            result &= !filter.GetValue("Name", out buffer) || FilterCriterias.ContainsLine(material.Name, buffer);
            result &= !filter.GetValue("Mark", out buffer) || FilterCriterias.ContainsLine(material.Profile, buffer);
            result &= !filter.GetValue("Gost", out buffer) || FilterCriterias.ContainsLine(material.Gost, buffer);
            //if (material.Measure != null)
            //{
            //	result &= !filter.GetValue("Measure.ShortName", out buffer) ||
            //	          FilterCriterias.ContainsLine(material.Measure.ShortName, buffer);
            //}
            return(result);
        }