Как сравнить список элементов enum со списком enum c # - PullRequest
0 голосов
/ 01 марта 2019

Привет, у меня есть ENUM, как

Elementary_Education = 1,
High_School_Incomplete = 2,
High_School_Complete = 3,
Secondary_Technical_Or_Vocational = 5,
Vocational_Education_Student = 7,
Higher_Education_Institution__Student = 9

Тогда у меня есть человек, например, у которого есть некоторые из этих образований, например, у него есть эти три: High_School_Incomplete High_School_Complete Secondary_Technical_Or_Vocational

это я хочучтобы получить из этих 3 наибольшее значение в этом примере: Secondary_Technical_Or_Vocational.

Например, result.degree это элемент Enum, он должен получить значение enum, которое я хочу.абитуриент. Образовательный список.у каждого есть 1 элемент степени.я хочу сравнить каждое сырье и получить наивысшую степень элемента перечисления.

result.Degree = applicant.Educations.Where(x => (int)x.Degree)

Ответы [ 3 ]

0 голосов
/ 01 марта 2019

Самый простой способ - отсортировать градусы, а затем взять первый.

result.Degree = applicant.Educations.OrderByDescending(x => x.Degree).FirstOrDefault();

Редактировать: Забыли про Макс. Это даже лучше.

0 голосов
/ 01 марта 2019

вопрос не очень понятен, поэтому я сделал несколько предположений.Похоже, что человек, как вы его называете, имеет список образований, который будет представлять собой список степеней, каждое из которых имеет значение enum

, вы хотите получить наибольшее значение из этого списка и перевести его в enumvalue.

, поэтому с помощью кода, подобного следующему:

 public class Person
{
    public List<Education> Educations = new List<Education>();
}

public class Education
{
    public Enums.DegreeType Degree { get; set; }
}

public class Enums
        {
            public enum DegreeType
            {
                Elementary_Education = 1,
                High_School_Incomplete = 2,
                High_School_Complete = 3,
                Secondary_Technical_Or_Vocational = 5,
                Vocational_Education_Student = 7,
                Higher_Education_Institution__Student = 9
            }
        }

, мы можем теперь сделать что-то вроде этого:

 var person = new Person();
            person.Educations.Add(new Education { Degree = Enums.DegreeType.High_School_Complete });
            person.Educations.Add(new Education { Degree = Enums.DegreeType.Vocational_Education_Student });

            var highestEd = person.Educations.Select(p => (int)p.Degree).Max();
            Enums.DegreeType enumHighest;
            Enum.TryParse(highestEd.ToString(), out enumHighest);

обратите внимание, как я извлекаю высшее образование изсписок, а затем я могу проанализировать его обратно в его значение перечисления при необходимости.

0 голосов
/ 01 марта 2019

Вы можете получить максимальную степень, используя Max.Чтобы присвоить result, вам нужно привести его обратно к типу перечисления:

result.Degree = (NameOfYourEnum)list.Max(x => x.Degree);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...